触发器 20bushixinhaizai]

发布时间:2016-12-8 19:50:38 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"触发器 20bushixinhaizai]",主要涉及到触发器 20bushixinhaizai]方面的内容,对于触发器 20bushixinhaizai]感兴趣的同学可以参考一下。

请各位大侠给个sql的触发器的例子罗 (有主外键的例子(是更新类型的update))

http://topic.csdn.net/u/20090414/15/0a0f5f1c-9539-4673-9627-d21d6e1dec84.html

主外键的用级联更新删除更好.

问题说的不明白。 update tb set col=b.col from tb a join tb b on a.id=b.id  --?

首先到你想设置触发器的表,右键 所有任务 管理触发器 然后把[TRIGGER NAME]修改成你想要的触发器名字,一般是TRI_当前表名缩写_想要执行的操作. 如你想做插入操作,TRI_TABLE1_INSERT 来命名. 根据你想做的操作来修改FOR 后面的内容  2个相关联的表,studentno,studentname 比如你想在插入表table1的同时,触发器触发同时在表table2中插入相应的数据 greate trigger tri_table1_insert on dbo.table1 for insert as declare @studentno char(10),@studentname char(10) select @studentno = 学生编号 ,@studentname = 学生姓名 from inserted insert into table2 (学生编号,学生姓名,语文,数学,外语) values (@id,@name,0,0,0) go

转自海爷 CREATE   TABLE   TB(    ID    INT   IDENTITY(1,1) PRIMARY KEY ,                                     --主键 DT         DATETIME   NOT   NULL   DEFAULT   (GETDATE()),                  --业务日期时间    CODE        VARCHAR(20) NOT NULL ,                                                      --物品代码 TYPE     INT   NOT NULL DEFAULT(1),                                    --业务类型,我们可以简化为1--进 2--出    PRICE   NUMERIC(10,2) NOT NULL DEFAULT(0),                                         --单价          QTY       INT NOT NULL DEFAULT(0)                                        --数量 )    GO         --建立金额表    CREATE   TABLE   TB1(    ID    INT   IDENTITY(1,1) PRIMARY KEY ,                                     --主键 TID   INT   NOT NULL,                                                      --TB表ID YEARS   INT  NOT NULL,                                                         --年份   MONTHS  INT         NOT NULL,                                               --月份   INMONEY NUMERIC(10,2)  NOT NULL DEFAULT(0),                          --进金额          OUTMONEY NUMERIC(10,2) NOT NULL DEFAULT(0),                             --出金额 REM      VARCHAR(300)         NOT NULL DEFAULT('')                             --备注  )    GO      --触发器 CREATE TRIGGER TR_TB ON TB FOR          INSERT,DELETE,UPDATE AS   SET           NOCOUNT        ON --删除记录 DELETE    TB1 FROM      DELETED D WHERE    D.ID=TB1.TID   --修改记录 UPDATE   TB1  SET          YEARS       =YEAR(DT),          MONTHS =MONTH(DT),          INMONEY         =CASE WHEN TYPE=1 THEN PRICE*QTY ELSE 0 END,          OUTMONEY=CASE WHEN TYPE=2 THEN PRICE*QTY ELSE 0 END,          REM          =CASE WHEN TYPE=1 THEN '进' ELSE '出' END+CODE+'(数量:'+CAST(QTY AS VARCHAR)+',单价:'+CAST(PRICE AS VARCHAR)+')' FROM      INSERTED I,TB1 WHERE   I.ID=TB1.TID   --增加记录 INSERT     TB1  (          TID   ,          YEARS       ,          MONTHS ,          INMONEY         ,          OUTMONEY,          REM          ) SELECT          TID   =ID,          YEARS       =YEAR(DT),          MONTHS =MONTH(DT),          INMONEY         =CASE WHEN TYPE=1 THEN PRICE*QTY ELSE 0 END,          OUTMONEY=CASE WHEN TYPE=2 THEN PRICE*QTY ELSE 0 END,          REM          =CASE WHEN TYPE=1 THEN '进' ELSE '出' END+CODE+'(数量:'+CAST(QTY AS VARCHAR)+',单价:'+CAST(PRICE AS VARCHAR)+')' FROM       INSERTED I WHERE    NOT EXISTS      (          SELECT     1          FROM       TB1          WHERE    TID   =I.ID          )   GO

可以使用IF UPDATE语句IF UPDATE (<column_name>)定义一个监视指定列的数据更新的触发器。这样,就可以让触发器容易的隔离出特定列的活动。  USE KsbAdmin  GO  CREATE TRIGGER Employee_Update  ON Employee  FOR UPDATE  AS  IF UPDATE (EmployeeID)  BEGIN   RAISERROR ('不能修改工号', 10, 1)  ROLLBACK TRANSACTION  END 有了上面的触发器后,就不能修改Employee表中的EmployeeID的值了。

在Sql数据库中创建  create trigger temp_NotModifyOnSundy      on temp for insert as       if(datename(weekday,getdate())='星期日')          begin        RAISERROR ('不能在周日插入表记录', 10, 1)        ROLLBACK TRANSACTION        End 有了这样的触发器后,插入语句Insert into temp values (‘3’,’I love Shan for ever’)如果遇到星期天就插不进去。 同理可写update,delete

上一篇:sql 语句数据的读出和写入 20tianyong0913]
下一篇:sqlserver2000中存储过程如何调用oracle数据 20song_scs]

相关文章

相关评论