我需要使用触发器在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)
);
答案 0 :(得分:0)
您需要做几件事:
emp_id
列声明为AUTO_INCREMENT
; AUTO_INCREMENT
属性值设置为200
; emp_id
中的INSERT
行时, 为列employee
提供任何值。更改表格创建如下:
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
策略生成。
当您INSERT
新employee
表中的新记录时,您只需不为emp_id
列提供任何值:
INSERT INTO employee (last_name, first_name, dept_name)
VALUES ('Doe', 'John', 'accounting');
然后使用LAST_INSERT_ID()
MySQL函数检索插入时生成的emp_id
的值。
用于开发客户端应用程序的语言或库可能具有包装LAST_INSERT_ID()
并返回其值的函数。