sql >> Database >  >> RDS >> Mysql

Mysql-kolombeperking als niet leeg / vereist

Ik neem aan dat je geen blanco wilt (lege tekenreeks, in tegenstelling tot NULL ) waarden zijn ook toegestaan ​​in de tabel.

Normaal gesproken is dat wat een CHECK beperking voor. Je doet zoiets als

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

Echter, MySQL parseert de beperking, maar handhaaft deze niet. Je mag nog steeds lege waarden invoegen.

Om dat te omzeilen, maakt u een BEFORE INSERT trigger en verhoog een signaal bij een poging om een ​​lege waarde in te voegen:

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;

Doe hetzelfde op BEFORE UPDATE als u ook updates naar een lege waarde wilt verbieden.



  1. Hoe de schijfruimte te berekenen die door de MySQL-tabel wordt gebruikt op basis van kolomgegevenstypes en het aantal rijen?

  2. Sql selecteer de elementen die overeenkomen met de array en toon ze op een rij

  3. sql geografie naar dbgeography?

  4. MySQL PHP count(*) geeft iets raars terug