免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: love_aiqiu_123
打印 上一主题 下一主题

简单的sql,触发器问题,新手报到 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-11-28 08:38 |只看该作者
用法
CREATE TRIGGER 语句创建与数据库中的表关联的触发器,并在数据库中存储触发器。

触发器声明为行级触发器(此情况下,它在每行修改之前或之后执行)或语句级触发器(此情况下,它在整个触发器语句完成后执行)。

权限
必须有 RESOURCE 权限和表的 ALTER 权限,或者必须是表的所有者,或者有 DBA 权限。CREATE TRIGGER 将对表进行表锁定,因此需要对表进行排它使用。

副作用
自动提交。

论坛徽章:
0
12 [报告]
发表于 2008-11-28 08:59 |只看该作者
示例
第一个示例创建行级触发器。当任命一个新的部门经理时,更新该部门中雇员的 manager_id 列。

CREATE TRIGGER tr_manager
BEFORE UPDATE OF dept_head_id
ON department
REFERENCING OLD AS old_dept NEW AS new_dept
FOR EACH ROW
BEGIN
   UPDATE employee
   SET employee.manager_id=new_dept.dept_head_id
   WHERE employee.dept_id=old_dept.dept_id
END

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
13 [报告]
发表于 2008-11-28 09:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
14 [报告]
发表于 2008-11-28 09:43 |只看该作者
下一个示例更复杂,涉及语句级触发器。首先,按如下所示创建表:

CREATE TABLE "DBA"."t0"
(
   "id"           integer NOT NULL,
   "times"        timestamp NULL DEFAULT current timestamp,
   "remarks"            text NULL,
   PRIMARY KEY ("id")
)

论坛徽章:
0
15 [报告]
发表于 2008-11-28 09:44 |只看该作者
然后,创建此表的语句级触发器:

CREATE TRIGGER DBA."insert-st" AFTER INSERT ORDER 4 ON
DBA.t0
REFERENCING NEW AS new_name
FOR EACH STATEMENT
BEGIN
  DECLARE @id1 INTEGER;
  DECLARE @times1 TIMESTAMP;
  DECLARE @remarks1 LONG VARCHAR;

  DECLARE @err_notfound EXCEPTION FOR SQLSTATE VALUE '02000';

//declare a cursor for table new_name
  DECLARE new1 CURSOR FOR
   SELECT ID,times,remarks FROM
      new_name;
  OPEN new1;
//Open the cursor, and get the value
  LoopGetRow:
  LOOP
      FETCH NEXT new1
   INTO @id1, @times1,@remarks1;

      IF SQLSTATE = @err_notfound THEN
   LEAVE LoopGetRow
      END IF;

      //print the value or for other use
      PRINT (@remarks1);

  END LOOP LoopGetRow;
  CLOSE new1

END
-- 没看懂!

论坛徽章:
0
16 [报告]
发表于 2008-11-28 12:12 |只看该作者
原帖由 ILoveMK 于 2008-11-28 09:15 发表
嗯,不错,支持一下。

感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP