Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trigger i procedura składowana
busterek
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witajcie.
Mam taką tabelę:

fileID
userUD
uniqueFileID
originalFileName

Są w niej jeszcze inne pola, ale one są nieistotne. Po stronie aplikacji wykonuję następujące zapytanie dodające plik do bazy danych:

  1. INSERT INTO files (userID, originalFileName) VALUES ('$userID', '$originalFileName');


Chciałbym teraz po stronie bazy danych dokonać update tego rekordu, wykonując najpierw złączenia wartosci z pól fileID, userID oraz originalFileName, następnie wykonać na tym złączonym ciągu kodowanie SHA1 i tą wartość zapisać w polu uniqueFileID. Jak to zrobić?

Coś zrobiłem, ale nie działa. Poniżej kod triggera i procedury;

  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE `updateFiles`()
  4. BEGIN
  5. SELECT LAST_INSERT_ID() INTO @lastID FROM files;
  6. SELECT SHA1(CONCAT(fileID, userID, originalFileName)) INTO @UID FROM files WHERE fileID= @lastID;
  7. UPDATE files SET uniqueFileID= @UID WHERE fileID = @lastID;
  8. END
  9.  
  10. DELIMITER ;


  1. DELIMITER $$
  2. DROP TRIGGER IF EXISTS uniqueID
  3. $$
  4. CREATE TRIGGER uniqueID AFTER INSERT ON files
  5. FOR EACH ROW
  6. BEGIN
  7. CALL updateFiles();
  8. END;
  9. $$
  10. DELIMITER ;


Po wywołaniu INSERT dostaję błąd 1442. Jak to zrobić poprawnie?

Ten post edytował busterek 1.12.2013, 11:24:37
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 06:23