触发器代码问题

问题描述

使用PowerDesign15.1产生了触发器,但是提示错误:/*==============================================================*//*DBMSname:MicrosoftSQLServer2008*//*Createdon:2014/9/109:15:51*//*==============================================================*/ifexists(select1fromsysobjectswhereid=object_id('"CLRTrigger_article"')andtype='TR')droptrigger"CLRTrigger_article"goifexists(select1fromsysobjectswhereid=object_id('ti_article')andtype='TR')droptriggerti_articlegoifexists(select1fromsysobjectswhereid=object_id('tu_article')andtype='TR')droptriggertu_articlegoifexists(select1fromsysobjectswhereid=object_id('"CLRTrigger_xk_column"')andtype='TR')droptrigger"CLRTrigger_xk_column"goifexists(select1fromsysobjectswhereid=object_id('td_xk_column')andtype='TR')droptriggertd_xk_columngoifexists(select1fromsysobjectswhereid=object_id('Article')andtype='U')droptableArticlegoifexists(select1fromsysobjectswhereid=object_id('Xk_Column')andtype='U')droptableXk_Columngoifexists(select1fromsysobjectswhereid=object_id('Xk_Config')andtype='U')droptableXk_Configgo/*==============================================================*//*Table:Article*//*==============================================================*/createtableArticle(idintnotnull,ColumnIdintnull,Titlevarchar(200)null,Authorvarchar(10)null,PostDatedatetimenull,IsPicintnull,PicUrlvarchar(200)null,Bodytextnull,constraintPK_ARTICLEprimarykey(id))go/*==============================================================*//*Table:Xk_Column*//*==============================================================*/createtableXk_Column(idintidentity,Titlevarchar(50)null,Codevarchar(2000)null,constraintPK_XK_COLUMNprimarykey(id))go/*==============================================================*//*Table:Xk_Config*//*==============================================================*/createtableXk_Config(idintnotnull,Titlevarchar(50)null,CopyRightvarchar(400)null,Modeintnull,constraintPK_XK_CONFIGprimarykey(id))godeclare@CurrentUsersysnameselect@CurrentUser=user_name()executesp_addextendedproperty'MS_Description','0=aspx,1=html,2=urlrewrite','user',@CurrentUser,'table','Xk_Config','column','Mode'gocreatetrigger"CLRTrigger_article"onArticleinsertasexternalname%Assembly.GeneratedName%.gocreatetriggerti_articleonArticleforinsertasbegindeclare@numrowsint,@numnullint,@errnoint,@errmsgvarchar(255)select@numrows=@@rowcountif@numrows=0return/*Parent"Xk_Column"mustexistwheninsertingachildin"Article"*/ifupdate(ColumnId)beginselect@numnull=(selectcount(*)frominsertedwhereColumnIdisnull)if@numnull!=@numrowsif(selectcount(*)fromXk_Columnt1,insertedt2wheret1.id=t2.ColumnId)!=@numrows-@numnullbeginselect@errno=50002,@errmsg='Parentdoesnotexistin"Xk_Column".Cannotcreatechildin"Article".'gotoerrorendendreturn/*Errorshandling*/error:raiserror@errno@errmsgrollbacktransactionendgocreatetriggertu_articleonArticleforupdateasbegindeclare@numrowsint,@numnullint,@errnoint,@errmsgvarchar(255)select@numrows=@@rowcountif@numrows=0return/*Parent"Xk_Column"mustexistwhenupdatingachildin"Article"*/ifupdate(ColumnId)beginselect@numnull=(selectcount(*)frominsertedwhereColumnIdisnull)if@numnull!=@numrowsif(selectcount(*)fromXk_Columnt1,insertedt2wheret1.id=t2.ColumnId)!=@numrows-@numnullbeginselect@errno=50003,@errmsg='Xk_Column"doesnotexist.Cannotmodifychildin"Article".'gotoerrorendendreturn/*Errorshandling*/error:raiserror@errno@errmsgrollbacktransactionendgocreatetrigger"CLRTrigger_xk_column"onXk_Columninsertasexternalname%Assembly.GeneratedName%.gocreatetriggertd_xk_columnonXk_Columnfordeleteasbegindeclare@numrowsint,@errnoint,@errmsgvarchar(255)select@numrows=@@rowcountif@numrows=0return/*Deleteallchildrenin"Article"*/deleteArticlefromArticlet2,deletedt1wheret2.ColumnId=t1.idreturn/*Errorshandling*/error:raiserror@errno@errmsgrollbacktransactionendgo

解决方案

解决方案二:
createtrigger"CLRTrigger_article"onArticleinsertasexternalname%Assembly.GeneratedName%.gocreatetrigger"CLRTrigger_xk_column"onXk_Columninsertasexternalname%Assembly.GeneratedName%.go

改成createtrigger"CLRTrigger_article"onArticleforinsertasexternalname你定义的程序集名称.Triggers.UF_DML_Trigger;gocreatetrigger"CLRTrigger_xk_column"onXk_Columnforinsertasexternalname你定义的程序集名称.Triggers.UF_DML_Trigger;go

解决方案三:
老大能解释下为什么我是使用PD自动生成的,但是语句里面且没有添加for?还有就是@errno,那里都是现实添加(
解决方案四:

解决方案五:
解决了吗?我也碰到了这个问题。

时间: 2024-10-25 22:38:33

触发器代码问题的相关文章

wpf请问这段事件触发器代码为什么会异常?

问题描述 wpf请问这段事件触发器代码为什么会异常? <Button Grid.Row="1" Grid.Column="1" Margin="45,30,45,40" Content="确定" Name="button1"> <Button.Triggers> <EventTrigger RoutedEvent="Mouse.MouseEnter">

mssql 触发器代码

mssql 触发器代码 create trigger depart_update on depart for update  as begin update t set t.部门号=i.部门号 from worker t, inserted i ,deleted d where t.部门号=d.部门号 end create trigger worker_delete on worker for delete  as begin delete t from salary t, deleted d

如何调试触发器

触发器 //-------------------------------------调试触发器//-------------------------------------作者:四海为圈(原创)//-------------------------------------1.创建存储过程以便触发触发器3.选择单步运行存储过程2.在触发事件的语句如:insert .update .delete语句时按F11//-------------------------------------本方法在sq

Oracle学习(十五) 触发器

触发器可实现表间数据的一致性和完整性.当一个基表被修改时,相应的触发器会自动执行.对表数 据的操作有插入.修改和删除,相应的维护数据的触发器也大致有insert.update和delete三种. 触发器的类型有三种: (1)DML触发器:在对表进行DML操作的时候触发. (2)替代触发器:由于在Oracle中不能直接对有两个以上表建立的视图进行DML操作,所以给出了替 代触发器,它是Oracle专门为进行视图操作的一种处理方法. (3)系统触发器:它可以在Oracle数据库系统的事件中进行触发,

SQLServer2005触发器提示其他会话正在使用事务的上下文的解决方法

MSDN上看了一下说是sql server 2005不支持在分布式事务处理中存在指向本地的链接服务器(环回链接服务器)个人尝试了下是由于在双向的sql server访问中采用了链式方式访问(LinkedServer方式),遇到这种情况只需要将原来访问对方数据库的语句: 复制代码 代码如下:select  *  from  linkedServerA.dbo.table1 修改为:复制代码 代码如下:select  *  from  dbo.table1 即可. 触发器代码如下: 复制代码 代码如

PL/SQL --&amp;gt; DML 触发器

--======================= -- PL/SQL --> DML 触发器 --=======================         何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行.对于这样的代码我们称之为触发器 .触发器根据触发类型的不同又分为不同级别的触发器,下面将给出触发器的分类,定义,以及使用的示例.   一.触发器的相关概念     1.触发器的分类         通常根据触发条件以及触发级别的不同分为DM

PL/SQL12.1 ——DML 触发器

 http://blog.csdn.net/robinson_0612/article/details/6098258  何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行.对于这样的代码我们称之为触发器 .触发器根据触发类型的不同又分为不同级别的触发器,下面将给出触发器的分类,定义,以及使用的示例.   一.触发器的相关概念     1.触发器的分类         通常根据触发条件以及触发级别的不同分为DML触发器,INSTEAD OF 触发器,系

求教mysql触发器字段生成流水号

问题描述 求教mysql触发器字段生成流水号 MySql主键流水号要求8位日期(20150725)+4位顺序号(0001),自增不重复 主键流水号用varchar吗?int好像插入不了12位. 求表结构和触发器的演示,谢谢! 解决方案 用varchar类型存储这个流水号. 其实我认为应该用存储过程,不知道你为什么用触发器. http://blog.csdn.net/dengsilinming/article/details/8488626 解决方案二: http://bbs.csdn.net/t

你真的了解触发器么 数据实时同步更新问题剖析

当我们想更新一张动态表的时候(即:表中的数据不断的添加),也许我们会用数据库代理,通过写作业,然后让他定时查询动态表中最新添加的数据,然后更新数据.这样时能实现更新数据的要求,但是数据却不能实时同步更新. 这个时候,触发器就是我们想要的神器了.我们可以在那张动态表上新建触发器.触发器的实质就是个存储过程,只不过他调用的时间是根据所建的动态表发生该表而执行(即:Insert新数据,Update或者Delete数据). 具体怎么使用触发器,今天我这里就不介绍了,园子里资料多的很.那么我今天要介绍的是