SQL 触发器添加数据

3

感谢您的帮助。

我在MySQL上有3个表。一个表是我的用户表,第二个表是我的用户特征表,第三个表是角色表。首先,当插入用户时,我需要在措施表上添加注册信息。也就是说,如果我向 tbl_users 添加新用户,触发器会获取用户id并写入 tbl_measures。我只需要这个。

INSERT INTO tbl_measures (user_id) VALUES (tbl_users.id) 

这是我的触发器,它部分工作正常。当我添加新用户时,触发器会向tbl_measures添加一行新记录,但不包括id。
图表结构请参考以下链接:tables shema

1
你的问题提到了MySQL,但是你标记了SQL Server和Postgres。这些是三种不同的产品。我已经移除了数据库标签,请只添加相关的标签。 - GMB
2个回答

1
当你在insert trigger中引用NEW.id时,有两种主要情况。在第一种情况下,你会得到正确的id值,这是你期望的结果。在第二种情况下,它是null,这就是发生的情况。
重要的是trigger���在insert之前还是之后运行。在insert之前,id不存在,因为记录尚未创建。在insert之后,id存在。简而言之,代码如下:
DELIMITER //

CREATE TRIGGER PROOFOFCONCEPT
AFTER INSERT
ON EACH ROW
BEGIN

    INSERT INTO tbl_measures(user_id)
    VALUES (NEW.id);

END; //

DELIMITER ;

0
我找到了解决方案:
CREATE TRIGGER `after_members_insert` AFTER INSERT ON `tbl_users`
 FOR EACH ROW BEGIN
        INSERT INTO tbl_measures(user_id)
        VALUES(new.id);
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接