sys.databases表上的SQL触发器 [英] SQL Trigger on sys.databases table

查看:77
本文介绍了sys.databases表上的SQL触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的朋友们,





i想在sys.database表上写入触发器

one colum名称state_desc在其中一个数据库处于可疑/文件恢复模式时更改。





i想要事件,当table和colum state_desc的值发生变化时那个事件我将执行我的其他操作。

解决方案

以任何方式调整系统表都是不可取的。您的触发器或任何其他添加可能会导致意外行为,并且无论何时将修补程序或Service Pack应用于SQL Server,您的修改都可能会消失。由于这些原因,默认情况下不允许对系统拥有的对象进行修改。



如果您打算创建一个拥有自己的表的触发器,那么您已经定义了一个错误的表CREATE语句。应该是这样的:

  CREATE   TRIGGER  TriggeredSuspect  on    MyTableNameGoesHere   
INSTEAD 更新
AS 声明 @ empname varchar 55 ) , @ empAdd varchar 55 ), @ audit_action varchar 100 );
选择 @ empname = ' 怀疑'
选择 @ empAdd = ' 怀疑'
set @ audit_action = ' 插入记录 - 插入触发后。;
插入 进入 [TestDB] .dbo.employee(emp_name,emp_add)
@ empname @ empAdd ) ;
PRINT ' AFTER INSERT触发器被触发后。


Dear Friends,


i want write trigger on sys.database table in which
one colum name state_desc is change when one of database in suspect/ file recovery mode.


i want event when value of table and colum state_desc change on that event i will perform my other operation.

解决方案

It really isn't advisable to moderate system tables, in any way. Your trigger or any other addition could cause undesired behaviour and whenever a patch or service pack is applied to the SQL Server your modifications may disappear. Because of these reasons modifications to system owned objects are not allowed by default.

If you intend to create a trigger own your own table then you have defined a wrong table in the CREATE statement. Should it be something like:

CREATE TRIGGER TriggeredSuspect on MyTableNameGoesHere
INSTEAD of Update
AS declare @empname varchar(55), @empAdd varchar(55), @audit_action varchar(100);
select @empname='Suspect'
select @empAdd='Suspect'
set @audit_action='Inserted Record -- After Insert Trigger.';
insert into [TestDB].dbo.employee(emp_name,emp_add)
values (@empname,@empAdd);
PRINT 'AFTER INSERT trigger fired.'


这篇关于sys.databases表上的SQL触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆