sql-server - 如何更新触发器中插入的字段

标签 sql-server triggers sql-server-2012

好的,我的情况是这样的:

我有一个名为 Company 的表,我想在我在该表中添加的每条记录后添加一个触发器,以检查列 Name 是否不以“LTD”结尾,然后在 Name 的末尾添加“LTD”。

我收到一条错误消息,提示“)”附近的语法不正确。我该怎么做?

Create Trigger [Add_LTD] on Company
After Insert As
Update Company
Set Name = Name + ' LTD'
If Exists (Select Name 
From Inserted
Where Name Not Like '% LTD')  

最佳答案

你需要这样的东西:

CREATE TRIGGER [Add_LTD] on dbo.Company
AFTER INSERT AS
   UPDATE dbo.Company
   SET Name = Name + ' LTD'
   FROM Inserted i
   WHERE dbo.Company.CompanyID = i.CompanyID
     AND Name NOT LIKE '% LTD'

您需要加入 Inserted 中的行到你的基础表(为了只更新那些新插入的行),最好的方法是使用你的主键(类似于 CompanyID )来实现这一点。

关于sql-server - 如何更新触发器中插入的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16511396/

相关文章:

c# - 将小数插入 sql 会导致插入零数而不是接近零的十进制数

sql - 如何计算 SQL Server 中不同列的数量

sql - 基于 SQL Server 参数值的条件 WHERE

mysql - 在Mysql中添加新列时如何轻松维护审计触发器

javascript - 在Javascript事件中,如何判断stopPropagation()已经被调用?

sql - 从Powershell脚本调用Stored Proc时,保留 “restore pending”状态的较大数据库(10GB +)

sql-server - 复制过滤后的数据子集 : Merge or Transactional replication?

php - SQLSRV for PHP for MSSQL 的配置问题

c# - 如何在 Entity Framework 5 的 Linq 中使用 DbGeography.Filter?

Mysql 在 before update 触发器中发出 update 命令