首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

疑难有关问题!1

2012-10-20 
疑难问题!!!!!!1一个触发器,用户创建新表时,同样创建一个与之相同的表,表名后加——bk用户插入数据时也插入

疑难问题!!!!!!1
一个触发器,用户创建新表时,同样创建一个与之相同的表,表名后加——bk

用户插入数据时也插入数据

[解决办法]

发这么多帖子啊
用户创建的时候需要加一个dml 触发器


SQL code
IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = 0 AND name = 'tt')DROP TRIGGER tt ON DATABASE;GOCREATE TRIGGER tt ON DATABASEFOR CREATE_TABLEASBEGIN     SET CONCAT_NULL_YIELDS_NULL ON    DECLARE @AffectedTable nvarchar(255),@backUpTable nvarchar(255),@create_Script nvarchar(max)    --获取建表的语句    SELECT  @create_Script=EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)')    --获取表的名称    SELECT  @AffectedTable = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(255)')    --定义一个备份的表名称    SELECT  @backUpTable =@AffectedTable+'_bk'    --替换表名    SELECT  @create_Script=REPLACE(@create_Script,@AffectedTable,@backUpTable)    --执行建表语句    EXEC(@create_Script)    --给创建的表加一个DML触发器    EXEC('        CREATE TRIGGER tt_'+@AffectedTable+' ON '+@AffectedTable+'        FOR INSERT        AS         BEGIN            INSERT INTO '+@backUpTable+' SELECT * FROM INSERTED        END'    )    SET CONCAT_NULL_YIELDS_NULL OFFEND --> 测试[tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GO CREATE TABLE [tb]([id] INT,[name] VARCHAR(4))GO INSERT [tb]SELECT 1,'土豆' UNION ALL SELECT 2,'水锅'SELECT * FROM tb/*id    name1    土豆2    水锅*/SELECT * FROM tb_bk/*id    name2    水锅1    土豆*/DROP TABLE tb_bk 

热点排行