我在使用mysql触发器分配主键值时遇到问题。考虑一下我的表:
v_object :v_object_id,create_date,..一些通用属性
用户:用户的user_id,name,..属性
我在users表上有一个触发器,如下所示:
create trigger new_vobject_for_user before insert on users
for each row begin
insert into v_object(v_type,...) values(...);
set NEW.id = // How do i get the new v_object's id here?
end;
当我插入用户时,我需要创建vobject并为user_id使用其新的自动递增值。
我还想知道是否有一种方法可以在不指定id的情况下插入用户。例如:
insert into users(n1,n2,n3,...) values(m1,m2,m3,...);
它给出了一个错误,指出未指定user_id。这是真的..我想要做的是创建vobject&在触发器中生成id。
答案 0 :(得分:1)
create trigger new_vobject_for_user before insert on users
for each row begin
insert into v_object(v_type,...) values(...);
set NEW.id = LAST_INSERT_ID();
end;
或者查看INFORMATION_SCHEMA
表并获取表v_object
的最后一次自动增量
create trigger new_vobject_for_user before insert on users
for each row begin
insert into v_object(v_type,...) values(...);
set NEW.id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'v_object')
end;
答案 1 :(得分:1)
SELECT @Result:=LAST_INSERT_ID();
获取最后一个插入ID。
或
SET Result=LAST_INSERT_ID();
SELECT Result;