sql >> Base de Datos >  >> RDS >> SQLite

SQLite NOT NULL Restricción

Resumen :en este tutorial, aprenderá a usar SQLite NOT NULL restricción para garantizar que los valores en una columna no sean NULL .

Introducción a SQLite NOT NULL restricción

Cuando crea una tabla, puede especificar si una columna acepta NULL valores o no. De forma predeterminada, todas las columnas de una tabla aceptan NULL valores excepto que use explícitamente NOT NULL restricciones.

Para definir un NOT NULL restricción para una columna, utilice la siguiente sintaxis:

CREATE TABLE table_name (
    ...,
    column_name type_name NOT NULL,
    ...
);
Code language: SQL (Structured Query Language) (sql)

A diferencia de otras restricciones como PRIMARY KEY y CHECK , solo puede definir NOT NULL restricciones a nivel de columna, no a nivel de tabla.

Basado en el estándar SQL, PRIMARY KEY siempre debe implicar NOT NULL . Sin embargo, SQLite permite NULL valores en la PRIMARY KEY columna excepto que una columna es INTEGER PRIMARY KEY columna o la tabla es un WITHOUT ROWID la tabla o la columna se define como NOT NULL columna.

Esto se debe a un error en algunas versiones anteriores. Si este error se corrige para cumplir con el estándar SQL, entonces podría romper los sistemas heredados. Por lo tanto, se ha decidido permitir NULL valores en la PRIMARY KEY columna.

Una vez que NOT NULL la restricción está adjunta a una columna, cualquier intento de establecer el valor de la columna en NULL como insertar o actualizar causará una violación de restricción.

SQLite NOT NULL ejemplo de restricción

El siguiente ejemplo crea una nueva tabla llamada suppliers :

CREATE TABLE suppliers(
    supplier_id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

En este ejemplo, el supplier_id es la PRIMARY KEY columna de los suppliers mesa. Porque esta columna se declara como INTEGER PRIMARY KEY , no aceptará NULL valores.

El name la columna también se declara con un NOT NULL restricción, por lo que solo aceptará valores que no sean NULL.

La siguiente declaración intenta insertar un NULL en el name columna de los suppliers tabla:

INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)

La declaración falla debido a NOT NULL violación de restricción. Aquí está el mensaje de error:

SQL Error [19]: [SQLITE_CONSTRAINT]  Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)Code language: CSS (css)

En este tutorial, ha aprendido a usar SQLite NOT NULL restricción para asegurar que los valores en una columna no sean NULL.