这是在sql server中创建的触发器,但是在oracle 11g 中却不能创建,求大神帮忙修改!

(1)建立学生添加院系触发器tri_adddept,当该表中已存在所对应院系号码的院系时,系统给与错误提示并回滚,其关键代码如下所示:CREATETRIGGERtri_a... (1)建立学生添加院系触发器tri_adddept,当该表中已存在所对应院系号码的院系时,系统给与错误提示并回滚,其关键代码如下所示:
CREATE TRIGGER tri_adddept ON tb_dept
FOR INSERT,UPDATE
AS
IF
(SELECT COUNT(*) FROM tb_dept,inserted
WHERE tb_dept.DeptNum=inserted.DeptNum)>0
BEGIN
PRINT '院系号码产生冲突,请核对后重试!'
ROLLBACK
END

(2)建立学生添加专业触发器tb_major,当专业信息中的院系号不对或者该表中已存在所对应专业号码的专业时,系统给与错误提示并回滚,其关键代码如下所示:
CREATE TRIGGER tri_addmajor ON tb_major
FOR INSERT,UPDATE
AS
IF(SELECT COUNT(*) FROM tb_dept,inserted
WHERE tb_dept.DeptNum=inserted.DeptNum)=0
BEGIN
PRINT '未找到该专业的院系信息,请添加相应院系后重试!'
ROLLBACK
END
ELSE IF
(SELECT COUNT(*) FROM tb_major,inserted
WHERE tb_major.MajorNum=inserted.MajorNum)>0
BEGIN
PRINT '院系号码产生冲突,请核对后重试!'
ROLLBACK
END
展开
 我来答
micro0369
2014-05-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4051万
展开全部

给你写一个,另一个你对着改吧

CREATE OR REPLACE TRIGGER tri_adddept
  before insert or update on tb_dept

  for each row
DECLARE
 cnt number;
BEGIN
 SELECT COUNT(*) into cnt FROM tb_dept WHERE tb_dept.DeptNum=:new.DeptNum
   if cnt > 0 then
     RAISE_APPLICATION_ERROR(-20001, '院系号码产生冲突,请核对后重试!');
   end if;
END;
更多追问追答
追问
DECLARE
cnt number;
这个声明是什么意思啊?有点看不懂?
追答
declare 这个是申明变量段的开头。

cnt number; 定义一个变量,用于记录 select count(*) 的数据行数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式