【发布时间】:2015-06-30 13:26:28
【问题描述】:
是否可以检查列值,然后在插入或更新之前更改其他记录值?
我会解释更多:我有如下表格:
CREATE DATABASE pics
GO
CREATE TABLE tel
(
[id] [bigint] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](10) NULL,
[number] [nvarchar](10) NULL,
[active] [bit]
)
我需要知道当前的电话号码,如果当前记录(插入或更新)在active 列中为真,其他记录active 列设置为假,
我的意思是当
- 插入或更新记录并
- 当前记录活动值为 True
然后将所有其他记录 active 列设置为 False。
有可能吗?
【问题讨论】:
-
您无法创建
before insert触发器,但您可以创建instead of insert触发器并在实际插入此触发器之前做任何您想做的事情。 -
什么是当前记录——你如何定义它? 每个语句触发一次 SQL Server 触发器 - 如果
INSERT或UPDATE影响多行 - 这些行中的哪一行是您的 当前 行???跨度> -
如果你能定义你的目标的逻辑,剩下的就是简单的SQL。
标签: sql-server database sql-server-2008 triggers