MinOrkMedlem sedan aug. 2000234 inlägg Jag vill att när en användare lägger till en rad i tabellen tblObj så ska fältet pID sättas till samma värde som nID, oavsätt vad pID fick för värde vid INSERT-uttrycket.
Jag försöker göra så här:
CREATE OR REPLACE TRIGGER set_pid_to_nid
AFTER INSERT ON tblObj
FOR EACH ROW
BEGIN
UPDATE OBJECTS
SET pID = nID
WHERE nID = :NEW.nID;
END;
Men får detta felmeddelande:
General SQL error.
ORA-04091: tabellen tblObj muterar, triggern/funktionen upptäcker den kanske inte
ORA-06512: vid "SET_PID_TO_NID"
rad 2
ORA-04088: fel vid körning av triggern 'SET_PID_TO_NID'
vad är det som går snett? Kan man kanske lösa "uppgiften" på ett bättre sätt?
DBMS är Oracle 8i.
MinOrkMedlem sedan aug. 2000234 inlägg Ingen som kan hjälpa mig...
i alla fall... kan man "typecast:a" en INTEGER (NUMBER) till en VARCHAR i Oracle eller måste applikationen ta hand om sånt?
LarsGMedlem sedan dec. 200012 464 inlägg Kan du inte lägga in det i en before row trigger i stället. Då borde du kunna tilldela värdet direkt.
CREATE OR REPLACE TRIGGER set_pid_to_nid
before INSERT ON tblObj
FOR EACH ROW
BEGIN
:new.pid := :new.nid;
end
För att konvertera från numeriskt till varchar2 så finns funktionen to_char
select to_char(num_column) from t
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 08 jan 2002]
MinOrkMedlem sedan aug. 2000234 inlägg Tack! Jag hade gjort en before row trigger också som inte fungerade, men jag ser nu mitt misstag... pinsamt. Men nu fungerar det som jag tänkt.