# बाध्यताएँ (Constraints) — माईएसक्यूएल

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

> UNIQUE, CHECK, NOT NULL, और cascading deletes।

## 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 delete सुविधाजनक हैं, पर पैरेंट पर एक ही `DELETE` चुपचाप बहुत सारा संबंधित डेटा मिटा सकता है — सावधानी से उपयोग करें।
