SQLServer触发器

时间:2010-04-08 11:08:56

标签: sql sql-server triggers

请帮我写一个向表中添加新行的触发器。

我的数据库中有3个表:

  1. 地区(身份证,姓名); id - primary;
  2. 技术(身份证,姓名); id - primary;
  3. 可用性(id,region,technic,count); id - primary,region - Regions.id上的外国人,Technik - foreign on technics.id。
  4. 我想在Regions中添加行的每个Technics行的可用性中添加新行。

    有些想法:

    procedure void OnAddNewRegion(int region)
    {
        foreach (Row r in Technic)
        {
            Availability.Rows.Add(new Row(id, region, r.Id, 0));
        }
    }
    

    但是在SQL触发器中。 我想在添加新的Technics行时也这样做。

2 个答案:

答案 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表的逻辑。