sql >> Database >  >> RDS >> Mysql

MySQL-kolom is ingesteld op NOT NULL maar staat nog steeds NULL-waarden toe

U voegt lege tekenreeksen in en lege tekenreeksen zijn niet NULL , om te controleren op NULL fout do:

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

en je zult een fout zien. De NOT NULL controleert alleen op waarden die niet NULL zijn .

Om een ​​lege string te voorkomen, moet je ofwel triggers gebruiken , of voer de controles uit op de programmeertaal aan de serverzijde om lege tekenreeksen om te zetten in NULL voor het uitvoeren van INSERT query.Een voorbeeldtrigger voor INSERT kan zijn als:(dit is slechts een voorbeeld)

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


  1. Class.forName(com.mysql.jdbc.Driver).newInstance()

  2. Geheugenlimieten in SQL Server 2016 SP1

  3. Hoe kan ik MariaDB wijzigen in MySQL in XAMPP?

  4. Hoe ClusterControl virtueel IP configureert en wat te verwachten tijdens failover