Обмеження правило насильницького стовпців даних на столі. Вони використовуються, щоб запобігти невірні дані від заносяться в базу даних. Це гарантує точність і достовірність даних в базі даних.
Обмеження можуть бути рівня шпальти чи рівня таблиці. Обмеження на рівні стовпця застосовуються тільки до однієї колонці, де в якості обмеження рівня таблиці застосовуються до всієї таблиці. Визначення типу даних для стовпця є обмеженням самого по собі. Наприклад, стовпець типу DATE обмежує стовпець допустимих дат.
Після зазвичай використовуються обмеження доступні в PostgreSQL.
NOT NULL Constraint. Гарантує. що стовпець не може мати нульове значення.
UNIQUE Constraint. Гарантує. що всі значення в стовпці різні.
PRIMARY Key. Унікально ідентифікує кожен рядок / запис в таблиці бази даних.
FOREIGN Key. Обмежує дані. засновані на колонках в інших таблицях.
CHECK Constraint. Перевірочне обмеження гарантує. що всі значення в стовпці задовольняють певні умови.
EXCLUSION Constraint. виключає обмеження гарантує. що якщо будь-які дві рядків порівнюються на зазначену column (s) або expression (s) за допомогою вказаного operator (s). не всі з цих порівнянь поверне значення TRUE.
NOT NULL Constraint
За замовчуванням стовпець може містити NULL значення. Якщо ви не хочете, стовпець має значення NULL, то вам необхідно визначити таке обмеження на цей стовпець із зазначенням, що NULL тепер не мають для цього стовпця. Чи не нульове обмеження завжди записується як обмеження стовпця.
NULL не те ж саме, як немає даних, скоріше, вона являє невідомі дані.
Наприклад, така інструкція PostgreSQL створює нову таблицю з ім'ям company1 і додає п'ять стовпців, три з яких, ID і імені і віку, які задають не брати NULL значення:
унікальне обмеження
Обмеження унікальності запобігає два записи з мають однакових значень в певному стовпці. У таблиці COMPANY, наприклад, ви можете захотіти, щоб два чи більше людей від ідентичного віку.
Наприклад, наступний оператор PostgreSQL створює нову таблицю з ім'ям COMPANY3 і додає п'ять стовпців. Тут стовпець AGE встановлений в UNIQUE, так що ви не можете мати два записи з тим же віком:
PRIMARY KEY Constraint
PRIMARY KEY обмеження однозначно ідентифікує кожний запис у таблиці бази даних. Там може бути більш УНІКАЛЬНІ колони, але тільки один первинний ключ в таблиці. Первинні ключі мають важливе значення при розробці таблиць бази даних. Первинні ключі є унікальними ідентифікаторами.
Ми використовуємо їх для позначення рядків таблиці. Первинні ключі стають зовнішніми ключами в інших таблицях, при створенні зв'язків між таблицями. Через «давнім кодування нагляду», первинні ключі можуть бути в SQLite NULL. Це не у випадку з іншими базами даних
Первинний ключ є полем в таблиці, яка однозначно ідентифікує кожен рядок / запис в таблиці бази даних. Первинні ключі повинні містити унікальні значення. Первинний ключ стовпець не може мати значення NULL.
Таблиця може мати тільки один первинний ключ, який може складатися з одного або декількох полів. Коли кілька полів використовуються в якості первинного ключа, вони називаються composite key.
Якщо таблиця має первинний ключ. визначений на будь-якому field (s). то ви не можете мати два записи. мають однакове значення цього field (s).
Ви вже бачили різні приклади вище, де ми створили COMAPNY4 таблицю з ID в якості первинного ключа:
Обмеження зовнішнього ключа
Обмеження зовнішнього ключа вказує. що значення в стовпці (or a group of columns) повинні відповідати значенням. що з'являється в деякій рядку інший таблиці. Ми говоримо про це підтримує кількість посилань цілісність між двома пов'язаними таблицями. Вони називаються зовнішніми ключами, так як обмеження іноземних; тобто за межами таблиці. Зовнішні ключі іноді називають ключем реферування.
Наприклад, наступний оператор PostgreSQL створює нову таблицю з ім'ям COMPANY5 і додає п'ять стовпців.
Наприклад, наступний оператор PostgreSQL створює нову таблицю з ім'ям department1, який додає три колонки. Колонка EMP_ID є зовнішнім ключем і посилається на ідентифікатор поля таблиці COMPANY6.
перевірочне обмеження
Перевірочне обмеження дозволяє умова, щоб перевірити значення вводиться в запису. Якщо умова приймає значення брехня, запис порушує обмеження і не увійшли до таблиці.
Наприклад, наступний оператор PostgreSQL створює нову таблицю з ім'ям COMPANY5 і додає п'ять стовпців. Тут ми додамо ЧЕК з колонками SALARY, так що ви не можете мати ніякої ЗАРПЛАТИ нуля:
ВИКЛЮЧЕННЯ Constraint
Обмеження вилучення гарантувати, що якщо будь-які два рядки порівнюються за вказаними стовпчиках або виразів, використовуючи зазначені оператори, по крайней мере, один з цих операторів порівняння буде повертати помилкові або нуль.
Наприклад, наступний оператор PostgreSQL створює нову таблицю з ім'ям COMPANY7 і додає п'ять стовпців. Тут ми додамо EXCLUDE обмеження:
Тут USING gist типу індексу будувати і використовувати для виконання.
Ви повинні виконати команду CREATE EXTENSION btree_gist; Один раз в базу даних. Це дозволить встановити btree_gist розширення, яке визначає обмеження вилучення на простих скалярних типів даних.
Як ми вже виконано вік повинен бути таким же, давайте подивимося, вставивши записи в таблицю:
Протягом перших двох операторів INSERT запис додається в таблицю COMPANY7. Для затвердження третього вставити відображається наступне повідомлення про помилку:
Видалення обмежень:
Щоб видалити обмеження, ви повинні знати його ім'я. Якщо ім'я відоме, легко впасти. Інакше ви повинні з'ясувати, що генерується ім'я системи. PSQL команди \ d ім'я_таблиці може бути корисним тут. Загальний синтаксис: