phpMYAdmin Trigger zabezpieczający przed duplikatem

0

Witam, mam pewien problem z Triggerem, mianowicie mam stworzyć trigger, który nie dopuści do duplikacji elementów.

Operuję na phpMyAdmin:
Typ serwera: MySQL
Wersja serwera: 5.7.26-0ubuntu0.16.04.1 - (Ubuntu)
Wersja protokołu: 10

Dla przykładowej tabeli:

screenshot-20190712104730.png

Ogólnie głównym problemem jest wersja MySql...., oraz nie wchodzi w grę zrobienie Unicode

CREATE TRIGGER PreventToDuplicat
BEFORE INSERT
ON TEST FOR EACH ROW
BEGIN
IF EXISTS (SELECT *
      FROM TEST T
      WHERE T.id= NEW.id) THEN     
      ROLLBACK 
END IF;
END;  
1

Hmm masz kolumny id I name. Nie możesz na nich po prostu ustawić unique? Te ID to dostajesz od klienta?

Unikalbym wpychania jakiejkolwiek logiki do bazy danych.

0

Rozwiązaniem jest taki trigger problem leżał w tym, że wersja sql, ma problem przy sednikach na końcach linijek w Begin, problem rozwiązuje wrzucenie kodu do delimiter | |.

delimiter |
  CREATE TRIGGER DuplesInHistory BEFORE INSERT ON History
  FOR EACH ROW
  BEGIN
     IF (exists (Select* FROM History WHERE Address = new.Address AND DateTime = new.DateTime)) 
          THEN
             SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Warning: Duplicate element cannot to add!';  
      END IF;
   END;
|
1

Po co Ci ten trigger?

Tak jak pisał @axelbest, unique consraint na (Address,DateTime) nie wystarczy? http://www.mysqltutorial.org/mysql-unique/

1 użytkowników online, w tym zalogowanych: 0, gości: 1