Auto_increment触发器

时间:2015-06-12 15:43:54

标签: mysql

我需要使用触发器在mysql数据库中auto_increment主键。不幸的是,我不太清楚如何做到这一点。在我提供的示例代码中,我需要employee表主键auto_increment以空表开始,起始值为200.然后,我需要每个新插入增加1.谢谢寻找,我希望你能够帮助我。

CREATE TABLE department (
dept_name VARCHAR(50) NOT NULL  Primary Key
);

CREATE TABLE employee (
emp_id INT(6) unsigned Default 0 Not NULL 
, last_name VARCHAR(25) NOT NULL
, first_name VARCHAR(40) NOT NULL
, dept_name VARCHAR(50) NOT NULL
, PRIMARY KEY(emp_id, dept_name)
,  FOREIGN KEY(dept_name) REFERENCES department (dept_name)
);

1 个答案:

答案 0 :(得分:0)

您需要做几件事:

  1. emp_id列声明为AUTO_INCREMENT;
  2. 将表格的AUTO_INCREMENT属性值设置为200;
  3. 当您emp_id中的INSERT行时, 为列employee提供任何值。
  4. 更改表格创建如下:

    CREATE TABLE employee (
        emp_id INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
        last_name VARCHAR(25) NOT NULL,
        first_name VARCHAR(40) NOT NULL,
        dept_name varchar(50) NOT NULL
        PRIMARY KEY(emp_id),
        FOREIGN KEY(dept_name) REFERENCES department_tbl(dept_name)
    ) AUTO_INCREMENT=200;
    

    如果表格中有AUTO_INCREMENT列,那么它必须是表格的PRIMARY KEY。我从上面dept_name的定义中删除了PK。我还从0列中删除了默认值emp_id。它的默认值由MySQL使用AUTO_INCREMENT策略生成。

    当您INSERTemployee表中的新记录时,您只需emp_id列提供任何值:

    INSERT INTO employee (last_name, first_name, dept_name)
    VALUES ('Doe', 'John', 'accounting');
    

    然后使用LAST_INSERT_ID() MySQL函数检索插入时生成的emp_id的值。

    用于开发客户端应用程序的语言或库可能具有包装LAST_INSERT_ID()并返回其值的函数。

相关问题