计算由Excel批量复制上载从Excel插入的行

时间:2015-02-16 13:48:56

标签: sql sql-server database triggers

我在表格中有表格通知,我有以下列

  • ID(自动递增)

  • UNIVERSITY_NAME

  • TABLE_NAME

  • Number_of_Inserts

我在该表中有另一个表格学生表格,我有以下列

  • student_id数据
  • 姓名
  • University_ID

在该DB中还有大学

  • University_ID
  • UNIVERSITY_NAME

通常我插入许多记录同时发送到学生

我想使用SQL触发器填充通知表,

所以想编写可以

的SQL Trigger

1.我在学生表中执行的插入次数,并将该值插入通知表中的 Number_of_Inserts

2.在我将值插入学生表后获取University_ID并在通知表中插入University_Name列(所有University_ID对于批量插入都相同)

这是我现在尝试的内容

  CREATE TRIGGER trgAfterInsert ON [dbo].[Student]
FOR INSERT
AS
    declare @ID int;
    declare @University_Name varchar(100);
    declare @Table_Name archar(100);
    declare @Number_of_Inserts varchar(100);

    select @ID=i.ID from inserted i;    
    select @University_Name=i.Emp_Name from inserted i; 
    select @University_Name=i.University_Name from University where University.University_ID =University_ID from inserted i;
    SELECT @Number_of_Inserts=ROW_COUNT();  


    insert into Notification
           (ID,University_Name,Table_Name,Number_of_Inserts) 
    values(@ID,@University_Name,@Table_Name,@Number_of_Inserts);

    PRINT 'AFTER INSERT trigger fired.'
GO

这可以在triger中编写这种查询吗?

1 个答案:

答案 0 :(得分:1)

Inserted是一种本地表。您可以在触发器内部选择它,就像普通表一样,使触发器变得相当简单。

请改为尝试:

CREATE TRIGGER trgAfterInsert ON [dbo].[Student]
AFTER INSERT
AS
    INSERT Notification
           (ID,University_Name,Table_Name,Number_of_Inserts) 
    SELECT id, University_Name, Table_Name, count(*) over ()
    FROM inserted;

    PRINT 'AFTER INSERT trigger fired.'
GO