Я создал соединение в SQL Developer и добавил несколько таблиц в базу данных. Кроме того, я определил некоторые триггеры. Все они хорошо работают, за исключением тех, которые дают ошибку «идентификатор слишком долго». Я знаю ограничение на 30 символов, но я не вижу, что вызывает эту конкретную ошибку. С помощью этого кода я пытаюсь реализовать клавиши короткого замыкания.Oracle DB - идентификатор слишком длинный
Таблицы:
Izvestaj (IzvestajID, Датум, Opis, Tekst, PredmerID, NarucilacID, OsobaID, IzvrsilacID)
Predmer (PredmerID, Датум, Naziv, IzvrsilacID, LokacijaID)
Izvrsilac (IzvrsilacID, 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 также имеют некоторые значения вставляются) и при попытке изменить значение столбца «IzvrsilacID» (внешний ключ), я получаю сообщение об ошибке:
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. Извините за именование. Я не хотел переводить имена таблиц и столбцов на английский, потому что они отличались бы их длиной, что, по-видимому, вызывало ошибку в первую очередь.
Вот и все. Спасибо чувак. –