【问题标题】:Count rows inserted by SQL Bulk Copy Upload from Excel计算 SQL Bulk Copy Upload from Excel 插入的行数
【发布时间】: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


【解决方案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

【讨论】:

  • @TabAlleman 你是对的,删除了 tekst 的那部分。问题中的真正问题是尝试使用RBAR
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 2016-11-29
  • 2019-03-04
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多