【发布时间】:2014-01-28 01:02:17
【问题描述】:
我正在构建一个触发器以在插入之前执行两件事: - 拒绝给定的值(作品) - 更新空值(不能让它工作)
触发器表如下所示:
CREATE TABLE peeps(
name VARCHAR(20),
surname VARCHAR(20)
);
虽然触发器本身看起来像这样:
CREATE OR REPLACE TRIGGER name_a_i
BEFORE INSERT ON krasnoludki FOR EACH ROW
DECLARE
v_count NUMBER := 0;
BEGIN
IF initcap(:new.name) LIKE 'Adrian%' THEN
raise_application_error(-20001, 'Name starting with Adrian is prohibited');
ELSE
IF :new.name = '' OR :new.name IS NULL THEN
SELECT count(*) INTO v_count
FROM peeps
WHERE initcap(name) LIKE 'No_%';
UPDATE peeps
SET name = concat('No_', v_count + 1)
WHERE name = :new.name;
END IF;
END IF;
END name_a_i;
一切都会编译,但是当我将空值作为名称时,它不会将空值更新为 No_%。
请告诉我我做错了什么?
这是 Oracle 数据库。
【问题讨论】:
标签: sql oracle triggers sql-update sql-insert