【发布时间】:2021-10-25 10:13:36
【问题描述】:
我的数据库包含两个表;每个表在列ID 上都有主键。
第一个表tbl_Person也有一个外键引用第二个表tbl_Address:
tbl_Person tbl_Address
+----+------+ +----+---------+
| ID | Name | | ID | Address |
+----+------+ +----+---------+
| 1 | Jim | ---> | 1 | ..... |
| 2 | Tim | | 2 | ..... |
| 3 | Kim | | 3 | ..... |
+----+------+ +----+---------+
我现在想知道如何创建一个触发器,它将新插入的人的ID 插入第二个表tbl_Address,并将tbl_Address 的所有其他属性设置为NULL。
我当前的触发器如下所示:
CREATE TRIGGER tg_Person
ON tbl_Person
BEFORE INSERT
AS
BEGIN
DECLARE @ID INT
SELECT @ID = SCOPE_IDENTITY()
FROM tbl_Person
INSERT INTO tbl_Address (ID)
VALUES (@ID)
END
【问题讨论】:
-
"第一个表 tbl_Person 也有一个外键引用第二个表 tbl_Address" 你不是说
tbl_Address有一个引用@ 的FOREIGN KEY987654331@? -
是的,我就是这个意思
-
您是否注意到 Larnu 还修复了您原始代码中的两个严重缺陷?不要假设触发器执行时插入(或更新或删除)单行。 TSQL 也不支持“之前”触发器。但你还是另一个严重的问题。您正在向 tbl_address 中插入没有实际信息的“假”行。
标签: sql sql-server triggers