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
);