Constraint memastikan integritas data di level database — pertahanan terakhir sebelum data buruk masuk.
NOT NULL — kolom wajib diisi:
CREATE TABLE users (
name TEXT NOT NULL, -- Wajib
bio TEXT -- Boleh kosong (NULL)
);
UNIQUE — nilai harus unik:
CREATE TABLE users (
email TEXT UNIQUE NOT NULL
);
-- INSERT dengan email yang sama akan error
CHECK — validasi custom:
CREATE TABLE products (
price REAL CHECK(price > 0),
stock INTEGER CHECK(stock >= 0),
rating REAL CHECK(rating BETWEEN 0 AND 5)
);
DEFAULT — nilai bawaan:
CREATE TABLE posts (
published INTEGER DEFAULT 0,
created_at TEXT DEFAULT (datetime('now'))
);
FOREIGN KEY dengan CASCADE:
CREATE TABLE posts (
user_id INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE -- Hapus user → hapus semua post-nya
ON UPDATE CASCADE -- Update user id → update di posts juga
);