sql >> Databasteknik >  >> RDS >> Mysql

MySQL-kolumnen är inställd på NOT NULL men tillåter fortfarande NULL-värden

Du infogar tomma strängar och tomma strängar är inte NULL , för att leta efter NULL fel gör:

INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);

och du kommer att se fel. NOT NULL söker endast efter värden som inte är NULL .

För att förhindra tom sträng antingen måste du använda triggers , eller gör kontrollerna på serversidans programmeringsspråk för att konvertera tomma strängar till NULL innan du utför INSERT query. Ett exempel på trigger för INSERT kan vara som:(detta är bara ett exempel)

CREATE TRIGGER avoid_empty
    BEFORE INSERT ON addresses
        FOR EACH ROW
        BEGIN
        IF street = '' THEN SET street = NULL END IF;
END; 


  1. Konfigurera en lyssnare i Oracle Database (12c, 18c och 19c utgåvor)

  2. Hitta användare i Laravel efter användarnamn

  3. Spotlight Cloud Security Feature - Ta bort bokstaver

  4. Upptäck mysql-uppdaterings-/insättningsfel på grund av överträdda unika begränsningar