Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Trigger Вмъкване/актуализация

Бих предложил да посочите задействането на тригера за всеки ред. Намирам ги за много по-лесни.

Можете да преброите, за да видите дали MovieStar.Name стойността вече съществува и след това вмъкнете, ако не съществува; това е подобно на подхода, който имате по-горе. Това няма да успее, ако друг потребител вмъкне филмовата звезда между времето, когато проверявате, и времето, когато вмъкнете, но вероятно е достатъчно добро за присвояване на клас. Има приети подходи без провал за това, но може все още да не сте ги разгледали в класа.

Опитайте нещо подобно; вероятно включва всичко, което сте разгледали в класа досега:

CREATE OR REPLACE TRIGGER TestTrig
AFTER UPDATE OR INSERT ON STARSIN
FOR EACH ROW
DECLARE
  movieStarCount NUMBER;
BEGIN
  SELECT COUNT(*) INTO movieStarCount
    FROM MovieStar
    WHERE Name = :NEW.StarName;
  IF movieStarCount = 0 THEN
    INSERT INTO MovieStar (Name) VALUES (:NEW.StarName);
  END IF;
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите всяко липсващо число от поредица от числа?

  2. Как работи извличането на данни от SQL Server към SqlDataReader?

  3. Не може да се включи в разпределена транзакция с NHibernate

  4. Списък с елементи на формат за дата и време в Oracle

  5. ORA-01537. искам да потърся къде е включен файлът