当前位置: 代码迷 >> SQL >> SQL Server 2008 R2——软件创办月表时同时创建一个触发器
  详细解决方案

SQL Server 2008 R2——软件创办月表时同时创建一个触发器

热度:149   发布时间:2016-05-05 09:46:30.0
SQL Server 2008 R2——软件创建月表时同时创建一个触发器

=================================版权声明=================================

版权声明:原创文章 谢绝转载 

请通过右侧公告中的“联系邮箱([email protected])”联系我

勿用于学术性引用。

勿用于商业出版、商业印刷、商业引用以及其他商业用途。                   

 

本文不定期修正完善。

本文链接:http://www.cnblogs.com/wlsandwho/p/5036513.html

耻辱墙:http://www.cnblogs.com/wlsandwho/p/4206472.html

=======================================================================

没啥说的,鄙视那些无视版权随意抓取博文的爬虫小网站,祝你们早升极乐。

=======================================================================

我很少用触发器,因为这个东西容易忘。

但是既然有人有那种奇葩的需求,我还是可以写一个的。

=======================================================================

事主的创建表是在程序里,没源码。现在想在创建的每个月的月表上添加一个触发器。

=======================================================================

话不多说上代码。

 1 --by WLS 201051210 2 --网络代码有风险 3 --复制粘贴须谨慎 4  5 --------------------------------------------------------- 6 USE master 7 GO 8 --------------------------------------------------------- 9 CREATE DATABASE [TestDDLTrigger] ON  PRIMARY 10 ( NAME = N'TestDDLTrigger', FILENAME = N'D:\TestDDLTrigger.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )11  LOG ON 12 ( NAME = N'TestDDLTrigger_log', FILENAME = N'D:\TestDDLTrigger_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)13 GO14 ---------------------------------------------------------15 USE TestDDLTrigger16 GO17 ---------------------------------------------------------18 CREATE TRIGGER DDLTriCreateTablebyWLS19 ON DATABASE 20 FOR CREATE_TABLE21 AS 22   BEGIN23     DECLARE @TableDate NVARCHAR(6)24     select  @TableDate=convert(nvarchar(6),GETDATE(),112)25     --SELECT @TableDate26     DECLARE @TempSQL NVARCHAR(1000)27     SET @TempSQL='CREATE TRIGGER InnerTribyWLS ON T'+@TableDate+' '+'after Insert as select 1'28     --SELECT @TempSQL29     EXEC(@TempSQL)30   END31 GO32 ---------------------------------------------------------33 CREATE TABLE [T201512](SN INT)34 GO35 ---------------------------------------------------------36 INSERT INTO T201512 VALUES(1111)37 GO38 ---------------------------------------------------------39 EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'TestDDLTrigger'40 GO41 USE [master]42 GO43 ALTER DATABASE [TestDDLTrigger] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE44 GO45 USE [master]46 GO47 DROP DATABASE [TestDDLTrigger]48 GO49 ---------------------------------------------------------

=======================================================================

问题点在于要先有表后有触发器,

所以得

1 给“创建表”这个动作做一个触发器——DDL触发器,

2 在这个触发器里再创建一个触发器用于实际需求——DML触发器。

(结合了DDL触发器和DML触发器。)

=======================================================================

在C++的路上渐行渐远啊。

 

(友情支持请扫描这个)

微信扫描上方二维码捐赠

1楼王林森
,,看来我写的博客基本没营养,都是秒删啊。呵呵。
  相关解决方案