
向ORACLE 表中 插入数据,如果A列为A,B列为B则直接插入表中,如果不是则不执行
向ORACLE表中插入数据,如果A列为A,B列为B则直接插入表中,如果不是则不执行,请问下如何写这个触发器。比如说insertintoaaa(A,B)values(A,B...
向ORACLE 表中 插入数据,如果A列为A,B列为B则直接插入表中,如果不是则不执行,请问下如何写这个触发器。 比如说 insert into aaa (A,B)
values (A,B)则让他直接插入到表中,如果 insert into aaa (A,B)
values (A,1)则弹出错误,这个触发器怎么写。。
我想要做的是 A列选择了某一个数据 ,那么B列对应为另外一个数据相对应(我自己定义对应关系)才让他插入到表中。 展开
values (A,B)则让他直接插入到表中,如果 insert into aaa (A,B)
values (A,1)则弹出错误,这个触发器怎么写。。
我想要做的是 A列选择了某一个数据 ,那么B列对应为另外一个数据相对应(我自己定义对应关系)才让他插入到表中。 展开
2个回答
展开全部
CREATE OR REPLACE TRIGGER TRG_CHECK_VALUES
BEFORE INSERT ON TABLE_NAME
FOR EACH ROW
DECLARE
COL_A VARCHAR2(10);
COL_B VARCHAR2(10);
CURSOR INSERTED_CURSOR IS
SELECT :NEW.B, :NEW.C FROM DUAL;
BEGIN
COL_A := 0;
COL_B := 0;
IF INSERTING THEN
BEGIN
OPEN INSERTED_CURSOR;
FETCH INSERTED_CURSOR
INTO COL_A, COL_B;
WHILE INSERTED_CURSOR%FOUND LOOP
BEGIN
-----------------------
IF COL_A<> 'A' OR COL_B <> 'B' THEN
RAISE_APPLICATION_ERROR(-20001, '值不对,请查核!');
END IF;
----------------------------------------
END;
END LOOP;
CLOSE INSERTED_CURSOR;
END;
END IF;
END TRG_TEST_A;END TRG_TEST_A;
BEFORE INSERT ON TABLE_NAME
FOR EACH ROW
DECLARE
COL_A VARCHAR2(10);
COL_B VARCHAR2(10);
CURSOR INSERTED_CURSOR IS
SELECT :NEW.B, :NEW.C FROM DUAL;
BEGIN
COL_A := 0;
COL_B := 0;
IF INSERTING THEN
BEGIN
OPEN INSERTED_CURSOR;
FETCH INSERTED_CURSOR
INTO COL_A, COL_B;
WHILE INSERTED_CURSOR%FOUND LOOP
BEGIN
-----------------------
IF COL_A<> 'A' OR COL_B <> 'B' THEN
RAISE_APPLICATION_ERROR(-20001, '值不对,请查核!');
END IF;
----------------------------------------
END;
END LOOP;
CLOSE INSERTED_CURSOR;
END;
END IF;
END TRG_TEST_A;END TRG_TEST_A;
更多追问追答
追问
A列有很多数据,B列有很多数据, 如果A=A1那么B=B1才能插入表中,如果A=A1,B=B2则不能插入表中,报错。
追答
意思是只要 AA1或者BB2 就不能插入了哦~~
2014-07-18
展开全部
我打算和会议符合实际阿娇姐姐
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询