我如何在 PL/SQL 中创建一个可以创建限制的触发器,以便他们只能放置 1 个字符?
How can I create a trigger in PL/SQL that can create a restriction so that they can only put 1 character?
CREATE OR REPLACE TRIGGER sexo_A
Before update or insert of sexo on ator
for each row
when (
if (new.sexo = 'F')
then
return 1;
elseif (new.sexo = 'M')
then
return 1;
else
then
return 0;
end if;)
begin
RAISE_APPLICATION_ERROR('Só pode meter "F" para feminino e "M" para masculino');
end;
我想做的是在他们尝试更新或插入属性 "sexo" 时设置一个限制,用户只能输入字符 'F'(对于女性)或 'M'(男性)。
这不是触发器的工作。使用 check constraint 代替:
ALTER TABLE ator ADD CONSTRAINT ckgender CHECK (sexo IN ('M', 'F'));
如果你真的想滥用触发器:
CREATE OR REPLACE TRIGGER trg_sexo
BEFORE UPDATE OR INSERT OF sexo ON ator
FOR EACH ROW
BEGIN
IF (:NEW.sexo NOT IN ('M', 'F'))
THEN
RAISE_APPLICATION_ERROR(-20000, 'Só pode meter "F" para feminino e "M" para masculino');
END IF;
END trg_sexo;
/
CREATE OR REPLACE TRIGGER sexo_A
Before update or insert of sexo on ator
for each row
when (
if (new.sexo = 'F')
then
return 1;
elseif (new.sexo = 'M')
then
return 1;
else
then
return 0;
end if;)
begin
RAISE_APPLICATION_ERROR('Só pode meter "F" para feminino e "M" para masculino');
end;
我想做的是在他们尝试更新或插入属性 "sexo" 时设置一个限制,用户只能输入字符 'F'(对于女性)或 'M'(男性)。
这不是触发器的工作。使用 check constraint 代替:
ALTER TABLE ator ADD CONSTRAINT ckgender CHECK (sexo IN ('M', 'F'));
如果你真的想滥用触发器:
CREATE OR REPLACE TRIGGER trg_sexo
BEFORE UPDATE OR INSERT OF sexo ON ator
FOR EACH ROW
BEGIN
IF (:NEW.sexo NOT IN ('M', 'F'))
THEN
RAISE_APPLICATION_ERROR(-20000, 'Só pode meter "F" para feminino e "M" para masculino');
END IF;
END trg_sexo;
/