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

Ограничение на колоната на Mysql като не е празно / задължително

Предполагам, че не искате празен (празен низ, за ​​разлика от NULL ) стойности да бъдат разрешени и в таблицата.

Обикновено това е, което CHECK ограничение за. Правите нещо като

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

Въпреки това, MySQL анализира ограничението, но не го прилага. Все още имате право да вмъквате празни стойности.

За да заобиколите това, създайте BEFORE INSERT задейства и повишава сигнал при опит за вмъкване на празна стойност:

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;

Направете същото на BEFORE UPDATE ако искате да забраните и актуализации на празна стойност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ADDDATE() срещу DATE_ADD() в MySQL:Каква е разликата?

  2. MySQL:Актуализирайте множество колони, ако стойността им е равна на

  3. Инсталирайте MySQL на Mac

  4. Преобразуване/конвертиране на BigInt в Varchar в MySQL

  5. Кога да използвате mysql_real_escape_string()