水为痕 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 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝