【发布时间】:2012-01-05 08:37:40
【问题描述】:
我在 mysql 触发器分配主键值时遇到问题。考虑一下我的桌子:
v_object : v_object_id,create_date, .. 一些通用属性
users : 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。
【问题讨论】:
-
如果不能在 INSERT 语句中省略
user_id,那么它就不是自增列。 -
user_id 不是自动递增的。它只是用户表的 pk。 vobject 的 id 是自动递增的
-
那我有点不明白这个问题。当您没有设置显式值时,您希望 MySQL 对
users.user_id做什么? -
插入语句呢?如何避免插入语句中的 user_id?
-
请坐下来想一想:你有一个主键,你不想手动赋值,也不想让 MySQL 为你设置。那么,你想要什么?
NULL主键??