请帮我写一个向表中添加新行的触发器。
我的数据库中有3个表:
我想在Regions中添加行的每个Technics行的可用性中添加新行。
有些想法:
procedure void OnAddNewRegion(int region)
{
foreach (Row r in Technic)
{
Availability.Rows.Add(new Row(id, region, r.Id, 0));
}
}
但是在SQL触发器中。 我想在添加新的Technics行时也这样做。
答案 0 :(得分:4)
尝试这样的事情(假设Availability.id是一个标识),它也将同时处理多行:
CREATE TRIGGER TR_Regions ON Regions
FOR INSERT
AS
INSERT INTO Availability
(region, technic, count)
SELECT
i.id, t.id, 0
FROM INSERTED i
CROSS JOIN Technics t
GO
你没有说区域如何与Technics连接,所以我交叉加入它们(每个插入的区域,每个Technics获得一行)。
答案 1 :(得分:1)
在我看来,实现这个特定业务/插入逻辑的更清洁的解决方案是使用存储过程。
只需创建一个存储过程来处理将记录插入Region表的逻辑。