赞
踩
现在有一个表为a_model_info,表中有一个id为主键且值为递增,现在需要将表中一个非主键的值(model_code)进行递增
我们知道,一个表中只能有一个自增字段,但是不代表我们不能用别的方法来实现,比如用触发器,具体操作如下
- -- 创建序列
- CREATE TABLE e_model_sequence(
- id INT NOT NULL PRIMARY KEY,
- value INT NOT NULL
- );
上边操作执行完成后会多出一张表
然后我们再给这张表加一条数据(10000就是你自增的初始值,所以你的a_model_info表中第一条记录为10001)
- -- 新增一个初始值
- INSERT INTO e_model_sequence(id,value) VALUES(1,10000);
创建一个BEFORE INSERT 的触发器,每次插入数据时将model_code(a_model_info表里的非主键字段)的字段的值设置为自增的值,increment_model_code为创建的触发器的名字
- -- 创建一个BEFORE INSERT 的触发器,每次插入数据时将model_code(a_model_info表里的非主键字段)的字段的值设置为自增的值,increment_model_code为创建的触发器的名字
- CREATE TRIGGER increment_model_code
- BEFORE INSERT ON a_model_info
- FOR EACH ROW
- BEGIN
- UPDATE e_model_sequence SET value = value + 1 WHERE id = 1;
- SET NEW.model_code = (SELECT value FROM e_model_sequence WHERE id = 1);
- END;
创建完之后,你的触发器中就会多出一个,如果执行语句闲麻烦可以直接在此处添加,手动添加要注意定义的填写
如果有第二个表也有相同的需求,可以用同一个序列,执行语句如下
- -- 增加一条新的记录在序列表中
- INSERT INTO e_model_sequence(id,value) VALUES(2,10000);
创建一个BEFORE INSERT 的触发器,每次插入数据时将type_code(a_type_info表里的非主键字段)的字段的值设置为自增的值,increment_type_code为创建的触发器的名字
- -- 创建一个BEFORE INSERT 的触发器,每次插入数据时将type_code(a_type_info表里的非主键字段)的字段的值设置为自增的值,increment_type_code为创建的触发器的名字
- CREATE TRIGGER increment_type_code
- BEFORE INSERT ON a_type_info
- FOR EACH ROW
- BEGIN
- UPDATE e_model_sequence SET value = value + 1 WHERE id = 2;-- 注意此时的id为2
- SET NEW.type_code = (SELECT value FROM e_model_sequence WHERE id = 2);-- 注意此时的id为2
- END;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。