我在表格中有表格通知,我有以下列
ID(自动递增)
UNIVERSITY_NAME
TABLE_NAME
Number_of_Inserts
我在该表中有另一个表格学生表格,我有以下列
在该DB中还有大学表
通常我插入许多记录同时发送到学生表
我想使用SQL触发器填充通知表,
所以想编写可以
的SQL Trigger1.我在学生表中执行的插入次数,并将该值插入通知表中的 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中编写这种查询吗?
答案 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