Первичные и внешние ключи в pgAdmin
Мне было интересно, может ли кто-нибудь объяснить мне, как назначать первичные и внешние ключи в pgAdmin?
Я не могу найти какую-либо информацию в Интернете.
Например... У меня есть таблица Student со всеми их подробностями (адрес, d.o.b. и т.д.). Я собираюсь добавить student_number в таблицу и сделать ее первичным ключом.
Я просто хочу знать, как это сделать, используя pgAdmin? И если вы можете быть добрыми, чтобы объяснить, дайте мне дополнительную информацию об использовании Первичных ключей в postgreSQL (и pgAdmin). Тот же случай с внешними ключами.
Ответы
Ответ 1
В pgAdmin нет возможности добавить столбец в существующую таблицу и сделать его первичным ключом одновременно, потому что это вряд ли возможно.
Столбец первичного ключа должен содержать уникальные ненулевые значения. После добавления столбца в существующую таблицу он содержит значения NULL. Поэтому перед добавлением ограничений UNIQUE
или PRIMARY KEY
необходимо ввести уникальные значения.
Для этого правила существует исключение. Если вы добавите serial
, уникальные значения вставляются автоматически. В этом случае вы также можете сразу определить его ПЕРВИЧНЫЙ КЛЮЧ:
ALTER TABLE student ADD COLUMN student_number serial PRIMARY KEY;
Это работает в PostgreSQL 9.1. Я также не уверен, что это делается в более старых версиях.
pgAdmin не включает этот специальный случай для столбцов serial
в диалоговом окне "Новый столбец..." в это время (версия 1.14).
Ответ 2
Да, есть способ добавить первичный и внешний ключи в pgAdmin.
Протестировано в pgAdmin III Ver.1.16.1 (Windows 7)
- Выберите нужную таблицу
- Ctrl + Alt + Enter или щелкните правой кнопкой мыши/Свойства
- Выберите вкладку "Ограничения"
- В левой нижней части формы вы увидите опцию "Основной ключ"
- Нажмите кнопку
- Выберите вкладку "Столбцы"
- Выберите нужный столбец в качестве ключа
- Нажмите кнопку
И вы все настроены.
Вы можете заполнить больше вещей, если хотите, но теперь вы знаете, как туда добраться.
Ответ 3
Ниже SQL работает
SELECT
tc.constraint_name, tc.table_name, kcu.column_name,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
FROM
information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE constraint_type = 'PRIMARY KEY' AND tc.table_name='table_name';
Ответ 4
В Pgadmin3,