Oracle DB - 标识符过长

3

我已在SQL Developer中创建了一个连接并向数据库中添加了几个表。此外,我定义了一些触发器。它们都很好用,除了一个会出现“标识符太长”的错误。我知道30个字符的限制,但我无法确定是什么原因导致了这个特定的错误。通过这段代码,我正在尝试实现短路键。

表:
IzvestajIzvestajID,Datum,Opis,Tekst,PredmerID,NarucilacID,OsobaID,IzvrsilacID)
PredmerPredmerID,Datum,Naziv,IzvrsilacID,LokacijaID)
IzvrsilacIzvrsilacID,Naziv)
斜体值代表关系(表)的主键。

触发器:

create or replace TRIGGER "T_IZM_IZV"
AFTER UPDATE OF IZVRSILACID ON PREDMER
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
        EXECUTE IMMEDIATE ('ALTER TRIGGER'||'T_ZABRANA_IZM_IZV'||'DISABLE');
        UPDATE IZVESTAJ SET IZVRSILACID=:NEW.IZVRSILACID
        WHERE PREDMERID=:NEW.PREDMERID;
        EXECUTE IMMEDIATE ('ALTER TRIGGER'||'T_ZABRANA_IZM_IZV'||'ENABLE');
END;  

create or replace TRIGGER "T_ZABRANA_IZM_IZV"
BEFORE UPDATE OF IzvrsilacID ON Izvestaj
FOR EACH ROW
BEGIN
    RAISE_APPLICATION_ERROR(-20000, 'Direct altering of IzvrsilacID is forbidden');
END;

我已经向表“Predmer”添加了一些行(Izvrsilac和Izvestaj也插入了一些值),当我尝试更改“执行者ID”列(外键)的值时,出现错误:
UPDATE "KORISNIK"."PREDMER" SET IZVRSILACID = '1' WHERE ROWID = 'AAAFBRAABAAALDxAAB' AND ORA_ROWSCN = '675526'
ORA-00972: identifier is too long
ORA-06512: at "KORISNIK.T_IZM_IZV", line 4
ORA-04088: error during execution of trigger 'KORISNIK.T_IZM_IZV'


One error saving changes to table "KORISNIK"."PREDMER":
Row 2: ORA-00972: identifier is too long
ORA-06512: at "KORISNIK.T_IZM_IZV", line 4
ORA-04088: error during execution of trigger 'KORISNIK.T_IZM_IZV'

这个错误的原因可能是什么?我已经尝试了几种方法,甚至将触发器、表和列重命名为一个字母的名称,但都没有成功。
P.S. 对于命名问题表示抱歉。我不想将表和列的名称翻译成英文,因为它们的长度会有所不同,这似乎是导致错误的原因。
1个回答

10

这几行:

EXECUTE IMMEDIATE ('ALTER TRIGGER'||'T_ZABRANA_IZM_IZV'||'DISABLE');
EXECUTE IMMEDIATE ('ALTER TRIGGER'||'T_ZABRANA_IZM_IZV'||'ENABLE');

应该看起来像这样:

EXECUTE IMMEDIATE ('ALTER TRIGGER '||'T_ZABRANA_IZM_IZV'||' DISABLE');
EXECUTE IMMEDIATE ('ALTER TRIGGER '||'T_ZABRANA_IZM_IZV'||' ENABLE');
请注意添加的空格。
没有添加空格,您试图执行的是:
ALTER TRIGGERT_ZABRANA_IZM_IZVDISABLE

ALTER TRIGGERT_ZABRANA_IZM_IZVENABLE

这显然行不通。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接