水为痕 2018-01-15 12:46 采纳率: 50%
浏览 1402
已结题

关于限制行更新的触发器问题

数据库表比较多,并且有些是比较重要的表,不能随便更新和删除,因此想到在所有的表中建触发器,更新或者删除行数达到限制的时候就不允许操作。
单个表是没有问题的,由于表太多就用游标写了个循环执行,结果报错了,请大神给看一下?
SQL如下:
declare @TableName varchar(50)
Declare Cur Cursor For
select name from sysobjects where xtype = 'u'
declare @SQL Varchar(2000)
Open Cur
Fetch Cur Into @TableName --记录Table
While @@FETCH_STATUS=0
BEGIN
SET @SQL = '
CREATE TRIGGER ' +@TableName+'_LIMIT_
ON '+@TableName+' FOR UPDATE,DELETE
AS
if ORIGINAL_LOGIN()in ("sa","729467") and (select count(*) from deleted)> 50
BEGIN
RAISERROR ( "不允许超量的表更新,请联系DBA",16,1)
ROLLBACK TRANSACTION
RETURN
END
GO'
Exec(@sql)
End
Close Cur
Deallocate cur;

报错信息如下:
消息 102,级别 15,状态 1,过程 RM_CHECK_ITEMNEW_LIMIT_,第 7 行
'不允许超量的表更新,请联系DBA' 附近有语法错误。
消息 102,级别 15,状态 1,过程 RM_CHECK_ITEMNEW_LIMIT_,第 11 行
'GO' 附近有语法错误。
错误一直循环了好多,执行完数据库自己就断开连接了

  • 写回答

2条回答

  • devmiao 2018-01-15 15:52
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100