Triggers PLSQL触发器相等性检查
我需要一个触发器,用于我在大学的项目,该项目在插入表之前检查是否相等。这意味着在表Customer上有一个名为username的变量,在插入新用户名之前,它应该检查用户名是否存在。我不知道该怎么做Triggers PLSQL触发器相等性检查,triggers,Triggers,我需要一个触发器,用于我在大学的项目,该项目在插入表之前检查是否相等。这意味着在表Customer上有一个名为username的变量,在插入新用户名之前,它应该检查用户名是否存在。我不知道该怎么做 创建或替换触发器BENUTZERNAME CREATE OR REPLACE TRIGGER BENUTZERNAME BEFORE INSERT ON KUNDE. FOR EACH ROW DECLARE Benutzername KUNDE.Benutzername; BEGIN i
创建或替换触发器BENUTZERNAME
CREATE OR REPLACE TRIGGER BENUTZERNAME
BEFORE INSERT ON KUNDE.
FOR EACH ROW
DECLARE
Benutzername KUNDE.Benutzername;
BEGIN
if (:new.Benutzername <> :old.Benutzername)
Then RAISE_APPLICATION_ERROR(-20000,"Existiert bereits");
else
*keep inserting the new name*
NULL;
END;
在插入KUNDE之前。
每行
声明
Benutzername KUNDE.Benutzername;
开始
如果(:new.Benutzername:old.Benutzername)
然后引发应用程序错误(-20000,“Existiert bereits”);
其他的
*继续插入新名称*
无效的
结束;
这将暂时起作用
create or replace
TRIGGER BENUTZERNAME
BEFORE INSERT ON KUNDE
FOR EACH ROW
DECLARE
counter number(10):=0;
BEGIN
select count(1) into counter from KUNDE where userid = :new.Benutzername;
if (counter >0)
Then RAISE_APPLICATION_ERROR(-20000,'Existiert bereits');
end if;
END;
触发器是一种不好的方法。请改用Unique constraint。是否使用oracle db?如果是这样,请在插入之前尝试使用
EXISTS
条件。仅对我们的项目使用普通db。我认为应该是这样的:在KUNDE上插入之前创建或替换触发器BENUTZERNAME。对于每一行,声明Benutzername KUNDE.Benutzername;如果(:new.Benutzername:old.Benutzername)开始,则引发应用程序错误(-20000,“Existiert bereits”);否则继续插入新名称NULL;结束;因此,如果新用户名等于表中的一个用户名,则应导致应用程序错误,否则应继续插入