最近我们的服务器上的数据经常被改,经过查找发现了有一个SQL语句
update job set job=''没有where语句,会修改所有的表数据(经过对源程序的查找根本就没有发现这个语句),最后没有办法,我就想到用trigger去控制,如果有对全表进行修改的话就回滚操作,语句大概是这样的:
CREATE TRIGGER Job_Update
ON job
FOR UPDATE
AS
BEGIN
DECLARE @count int
select @count = count(*) from Deleted  --查出行数
IF @count > 50
begin
RAISERROR("回滚操作",10,1)
ROLLBACK TRANSACTION
end
END
经过测试在本地是可以起到作用的,可是到服务器上却是起不了作用,老是死锁。看来用trigger是行不通了,我又想到用约束,可是约束里好像没有针对一列里最少有多少种类进行限制(至少我是找不到),比如说:
select job,@@rowcount from job group by job取出行的,如果小于1000就不约束插入或者编辑的。我又想有没有在update之前就检查SQL语句的事件呢,可是也找不到?我现在真成了无头苍蝇了,求大家帮忙想想办法,谢谢了.

解决方案 »

  1.   

    update job set job=''
    這個語句一定要加上where 條件的
      

  2.   

    我在源程序中实在是找不到
    update job set job=''这一句(也不说定以前有人在捣蛋),只有想到数据库这边来控制了,求大家帮帮忙想想办法啦,用什么办法都行,trigger、约束之类的,只要能够做到都行。
    最近数据老是修改,我真是受不了啦,帮帮忙吧,谢谢了
      

  3.   

    SQL Server中有没有禁止某些SQL语句执行的功能,比如说像
    update job set job=%这样的