***** Object: Trigger [dbo].[trg_del] Script Date: 01/01/2016 12:58:28 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER [dbo].[trg_del] ON [dbo].[Common_Header] INSTEAD OF DELETEAS BEGIN DECLARE @cou INT DECLARE @headerid UNIQUEIDENTIFIER SELECT @cou = COUNT(*) FROM deleted; SELECT @headerid = id FROM deleted IF ( @cou > 1 ) RAISERROR(‘数据不允许删除!‘, 16, 1) ELSE DELETE FROM [Common_Header] WHERE id = @headerid ENDGO
CREATE TABLE [dbo].[Common_Header]([ID] [uniqueidentifier] NOT NULL,[Subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[ApplicantAD] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[ApplicantName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[CountryCode] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[CountryName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[CompanyCode] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[CompanyName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[DivisionCode] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[DivisionName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[LBUCode] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[LBUName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[CostCenter] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,[Email] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL,[CreatedDate] [datetime] NULL,[QueueID] [uniqueidentifier] NULL,[Status] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]GOALTER TABLE [dbo].[Common_Header] ADD CONSTRAINT [PK_Common_Header] PRIMARY KEY CLUSTERED ([ID]) ON [PRIMARY]GOCREATE NONCLUSTERED INDEX [NonClusteredIndex-20150603-113054] ON [dbo].[Common_Header] ([QueueID]) ON [PRIMARY]GO
T-SQL触发器,限制一次只能删除一条数据
标签:
小编还为您整理了以下内容,可能对您也有帮助:
sql中能一次删除两张表的数据吗
如果在一条语句中,delete命令是不能删除两张表的.
但是以下情况例外:
1.在当前被删表中建立了触发器,去删除另外一张表;
2.在SQL Server中,外键约束存在cascade delete.
sql中能一次删除两张表的数据吗
如果在一条语句中,delete命令是不能删除两张表的.
但是以下情况例外:
1.在当前被删表中建立了触发器,去删除另外一张表;
2.在SQL Server中,外键约束存在cascade delete.
如何写一个SQL触发器,禁止删除一张表
Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --要触发的事件
As --事件触发后所要做的事情
if Update(StudentID)
begin
................
end
应该说在删除记录的时候,你的主键肯定也是会被删除的。Delete(pk) 应该也能捕获到,当然这只是一种尝试,
Create trigger Simple
on Employee
instead of delete
as
select * from Employee where 2!=2;
instead of delete 就是当删除 Employee表中数据时,将我们删除Employee表中数据的sql替换为as后的sql语句.我这里写了个不可能成立的条件,也就是说。当删除Employee中数据时会替换执行这条不成立的sql,结果就是表中的数据没有被删除。(Sql Server测试通过)
如何写一个SQL触发器,禁止删除一张表
Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --要触发的事件
As --事件触发后所要做的事情
if Update(StudentID)
begin
................
end
应该说在删除记录的时候,你的主键肯定也是会被删除的。Delete(pk) 应该也能捕获到,当然这只是一种尝试,
Create trigger Simple
on Employee
instead of delete
as
select * from Employee where 2!=2;
instead of delete 就是当删除 Employee表中数据时,将我们删除Employee表中数据的sql替换为as后的sql语句.我这里写了个不可能成立的条件,也就是说。当删除Employee中数据时会替换执行这条不成立的sql,结果就是表中的数据没有被删除。(Sql Server测试通过)
有一道题,内容是:“创建一个触发器,控制数据删除”这题怎么做啊
这个应该很简单的,因为没有具体的题目示例,我就给你讲一下大体的思路
CREATE TRIGGER 触发器名
BEPORE(AFTER) 触发事件 ON 表名 //当什么的时候,删除数据
FOR EACH ROW //行级触发器,每执行一次触发事件,就激活触发器一次
AS BEGIN
IF
{其实这里就是跟题目息息相关的了,当满足什么条件的时候,执行什么操作}
THEN
{删除数据,用delete }
END IF;
END;
写的已经很详细了,把题目带入就可以了,还要看具体的环境
希望可以帮你o(∩_∩)o
T_SQL编程中的触发器可以在一个数据库中的‘多张表’,每次增加删除都要触发(insert,deleted)
貌似不能吧,触发器用来或判断插入,更新,删除的语句是否满足需求、、可以具体到行(行触发器或行触发器)、、一个触发器只能对应一个表或表中的行、、