如何才能把AUTO_INCREMENT列的值复制多一份存到其它的列

czb 2011-09-13 11:38:37
如何才能把AUTO_INCREMENT列的值复制多一份存到其它的列

有如下SQL建表语句
CREATE TABLE t_test(id INT UNSIGNED NOT NULL AUTO_INCREMENT,id_no INT UNSIGNED,NAME VARCHAR(10),PRIMARY KEY(id));


插入时,id是AUTO_INCREMENT的,id_no值在插入时默认和id相同,如果用下面的SQL语句进行插入
INSERT INTO t_test(NAME) VALUES('name1');

如何保证新插入的记录,id值和id_no值相等?

谢谢。

我试过用下面的语句
INSERT INTO t_test(id_no,NAME) VALUES(LAST_INSERT_ID(),'name1');

这是不对的,LAST_INSERT_ID()只能取到上次写入的值,而取不到本次写入的值。

...全文
98 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
czb 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chendong_j 的回复:]
TRIGGER里new.id貌似不行,曾经试过没成功.
你干脆在insert后再用insert的条件去update吧
[/Quote]

这个好像行得通,我试试。
ACMAIN_CHM 2011-09-13
  • 打赏
  • 举报
回复
没有办法,TRIGGER中也不行。
只能在你的INSERT语句后再执行一下UPDATE。

或者如果能保证不并发的情况下,可以取最大的ID+1。
czb 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 czb 的回复:]
如何才能把AUTO_INCREMENT列的值复制多一份存到其它的列

有如下SQL建表语句
CREATE TABLE t_test(id INT UNSIGNED NOT NULL AUTO_INCREMENT,id_no INT UNSIGNED,NAME VARCHAR(10),PRIMARY KEY(id));


插入时,id是AUTO_INCREMENT的,id_no值在插入……
[/Quote]

大哥,我写了下面这个触发器,不知道为什么老是编译不过,我对mysql不熟悉。


DROP TRIGGER IF EXISTS trg_test;

CREATE TRIGGER trg_test
BEFORE INSERT ON t_test
FOR EACH ROW
BEGIN
SET new.id_no = new.id;
END;


chendong_j 2011-09-13
  • 打赏
  • 举报
回复
TRIGGER里new.id貌似不行,曾经试过没成功.
你干脆在insert后再用insert的条件去update吧
wwwwb 2011-09-13
  • 打赏
  • 举报
回复
用TRIGGER不行?
new.id
czb 2011-09-13
  • 打赏
  • 举报
回复
谢谢各位,用了先插入再更新的模式。
rucypli 2011-09-13
  • 打赏
  • 举报
回复
插入完之后紧接着更新
iihero_ 2011-09-13
  • 打赏
  • 举报
回复
insert之后再update
或者全部完成之后,一次update

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧