# बाध्यताएँ (Constraints) — MySQL Fundamentals: SQL, Joins और Transactions

Source: https://www.skillbyai.com/hi/mysql/sql-constraints

> UNIQUE, NOT NULL, CHECK और ON DELETE CASCADE जैसी foreign key actions से data गुणवत्ता लागू करें।

## UNIQUE, CHECK, NOT NULL

बाध्यताएँ ख़राब डेटा को संग्रहीत होने से पहले ही रोक देती हैं।

```sql
CREATE TABLE products (
  id INT AUTO_INCREMENT PRIMARY KEY,
  sku VARCHAR(20) UNIQUE NOT NULL,
  price DECIMAL(10,2) CHECK (price >= 0)
);
```

## Cascading deletes

`ON DELETE CASCADE` पैरेंट पंक्ति हटते ही उससे जुड़ी चाइल्ड पंक्तियों को अपने-आप हटा देता है।

```sql
CREATE TABLE order_items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  order_id INT NOT NULL,
  product_id INT NOT NULL,
  quantity INT NOT NULL,
  FOREIGN KEY (order_id) REFERENCES orders(id)
    ON DELETE CASCADE
);
```

## Cascade सावधानी से उपयोग करें

Cascading deletes सुविधाजनक हैं, लेकिन parent पर एक `DELETE` चुपचाप बहुत सारा संबंधित data मिटा सकता है, इसलिए सावधानी रखें। `CHECK` constraints MySQL 8.0.16 से लागू होते हैं।
