我只是想知道是否有人可以帮助我开始创建trigger
。
我需要创建一个触发器来检查某些字符的INSERT
语句
例如:
INSERT INTO table
VALUES('ABC')
我想检查插入值是否有A,然后是B,然后是C ..
任何帮助都会很棒。 感谢
答案 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函数。