Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ograniczenie kolumny Mysql jako niepuste / wymagane

Zakładam, że nie chcesz pustego (pustego ciągu, w przeciwieństwie do NULL ) wartości, które mają być dozwolone w tabeli.

Zwykle właśnie to jest CHECK ograniczenie dla. Robisz coś takiego

CREATE TABLE
        mytable
        (
        myfield NOT NULL VARCHAR(200),
        CHECK(myfield > '')
        )

Jednak MySQL analizuje ograniczenie, ale go nie wymusza. Nadal możesz wstawiać puste wartości.

Aby obejść ten problem, utwórz BEFORE INSERT wyzwalanie i podnoszenie sygnału przy próbie wstawienia pustej wartości:

CREATE TRIGGER
        tr_mytable_bi
BEFORE INSERT
ON      mytable
FOR EACH ROW
BEGIN
        IF NEW.myfield = '' THEN
                SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Blank value on mytable.myfield';
        END IF;
END;

Zrób to samo na BEFORE UPDATE jeśli chcesz zabronić również aktualizacji pustej wartości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odczytać plik i dodać jego zawartość do bazy danych?

  2. MySQL — zaznacz wszystko oprócz tego, co znajduje się w tej tabeli

  3. Znajdź wolny pokój (system rezerwacji)

  4. Jak przekonwertować ciąg na szesnastkowy w MySQL – HEX()

  5. Entity Framework z MySql i migracjami nie działa, ponieważ maksymalna długość klucza to 767 bajtów