日期:2014-05-18  浏览次数:20629 次

100分求如果禁止表UPDATE
有一个表,只需要插入和删除,不会更新,为了保证设计的完整性,我想禁用表UPDATE,因为UPDATE会造成很多关联性的问题,不想把问题搞复杂了。

希望大家能提出解决方案,择优选择,只要可行就有分。

------解决方案--------------------
或写update触发器

create trigger tu_表 on 表
for update
raiserror( '该表不允许更新! ',16,1)
rollback tran
return
------解决方案--------------------
触发器
instead update
------解决方案--------------------
用触发器

create trigger test on 表名
for update
as
if exists(select 1 from inserted) or exists(select 1 from deleted)
begin
RAISERROR ( '不可更新此表 ',16,1)
rollback tran
return
end
------解决方案--------------------
给SQL用户权限设置里取消update权限即可

触发器也行(for、instead of触发器都可以) roy_88(中国风_燃烧你的激情!!!) 已经给出例子
------解决方案--------------------
create trigger test on 表
instead of update
as
begin
RAISERROR( '不可更新 ',100,1)
return
end

------解决方案--------------------
create trigger test on 表名
instead of update
as
begin
rollback tran
return
end
------解决方案--------------------
create trigger updateAllow_tr
on table instead of update
as
begin
raiserror( '不允许对此表进行更新! ',16,1)
end
------解决方案--------------------
--用觸發器實現
Create TRIGGER [dbo].[TR_NotUpdate]
ON [dbo].[T_Sys_Objects]
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;

rollback

RAISERROR ( '此表禁止更新。 ',11,1)
return
END
------解决方案--------------------
用INSTEAD OF UPDATE 触发器以代替 UPDATE 语句的标准操作
? 里面可以什么都不做
create trigger updateAllow_tr
on table instead of update
as
begin

end

------解决方案--------------------
--用触发器最简单:

CREATE TRIGGER tr_禁止更新 ON [表名]
FOR UPDATE
AS

ROLLBACK TRAN
RAISERROR( '禁止任何人更新数据! ', 16, 1)
RETURN
go