【发布时间】:2015-02-16 13:48:55
【问题描述】:
我有表格调用通知在那个表格我有下面的列
ID(自动递增)
大学名称
表名
Number_of_Inserts
我有另一个表调用学生该表中的表我有下面的列
- Student_ID
- 姓名
- University_ID
在那个数据库中有大学表也
- University_ID
- 大学名称
通常我会插入许多记录同时到Student表
我想用 SQL 触发器填充 Notification 表,
所以想写可以的SQL Trigger
1.count of Insertions 我在 Student 表中插入该值到 Notification 表中的 Number_of_Inserts 列
2.通过在我向 Student 表插入值并在 Notification 表中插入 University_Name 列后获取 University_ID(批量插入时所有 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 中编写这种查询?
【问题讨论】:
-
去掉了mysql标签,因为语法明显是SQL Server。
-
您的代码零意义。代码有很多错误。您正在使用诸如
@empid之类的变量,这些变量在任何地方都没有定义。您正在使用未在任何地方定义的别名,例如i.University_Name。 -
如果一次插入多行,则需要加入插入的表,而不是设置变量。网上有很多关于如何做到这一点的例子。
-
@TabAlleman 插入值我正在使用 excel 文件上传(SQL 批量复制上传)上传文件时我想计算我所做的插入次数,将其保存为通知表中的一条记录
标签: sql sql-server database triggers