ALTER trigger IsUpdatetable
on TABLE1 for update
as
if update(name)
BEGIN
RAISERROR ('变动', 10, 1)
--ROLLBACK TRANSACTION
END在更新name字段的不论数据是否相同都提示发生了变化
怎么判断更新的数据是否和原数据库中修改前的相同了
on TABLE1 for update
as
if update(name)
BEGIN
RAISERROR ('变动', 10, 1)
--ROLLBACK TRANSACTION
END在更新name字段的不论数据是否相同都提示发生了变化
怎么判断更新的数据是否和原数据库中修改前的相同了
on TABLE1 for update
as
if update(name)
if exists (select 1 from inserted i,deleted d where i,pk=d.pk and i.name<>d.name)
BEGIN
RAISERROR ('变动', 10, 1)
--ROLLBACK TRANSACTION
END
else
BEGIN
--update ... set name= 但是前后数据相同
END
on TABLE1 for update
as
if update(name)
if exists (select 1 from inserted i,deleted d where i.pk=d.pk and i.name<>d.name)
BEGIN
RAISERROR ('变动', 10, 1)
--ROLLBACK TRANSACTION
END
else
BEGIN
--update ... set name= 但是前后数据相同
ENDgo--PS:这样判断表必须有主键
on TABLE1 for update
as
BEGIN
declare @oldname varchar(20)
declare @newname varchar(20)
select @oldname=d.name from deleted d
select @newname=i.name from inserted i
if @oldname!=@newname
RAISERROR ('变动', 10, 1)
--ROLLBACK TRANSACTION
END
WHERE I.NAME <> D.NAME)
BEGIN
RAISERROR('变动', 10, 1)
ROLLBACK TRANSACTION
END