创建一个触发器

时间:2011-10-20 12:56:45

标签: sql oracle triggers

我只是想知道是否有人可以帮助我开始创建trigger

我需要创建一个触发器来检查某些字符的INSERT语句

例如:

INSERT INTO table 
VALUES('ABC')

我想检查插入值是否有A,然后是B,然后是C ..

任何帮助都会很棒。 感谢

3 个答案:

答案 0 :(得分:3)

这样做的最佳方法 - 最好的方法是使用检查约束,这是最高效,最简单,最合适的方法。

对于您的原始示例,可能如下所示:

alter table t1
     add constraint t1_col1_ck check ( col1 = 'ABC')
;

您在注释中提供的示例将不起作用,因为您将TO_NUMBER函数应用于非数字的字符串,因为它包含冒号。它应该检查DATE列的时间元素吗?如果是这样,这可能有效:

alter table t1
     add constraint t1_starttime_ck 
     check ( (start_date - trunc(start_date)  < 0.5)
;

具体细节取决于您要强制执行的规则。关键是应该尽可能通过约束而不是触发来强制执行完整性规则,并且通常是可能的。

答案 1 :(得分:2)

create or replace trigger iTableABC
  before insert
  on     table 
  for each row
begin
  if :new.value = 'ABC' then
    -- Do what it is you want here
  end if;
end;
/

这会在insert之前触发,检查值'ABC'。如果您希望在insert之后触发,请进行适当的更改。我们假设表table有一个名为value的字段。

答案 2 :(得分:0)

检查Documentation创建触发器,然后尝试this link。要检查是否包含某些子字符串,请尝试使用Instr函数。