Вопрос: У меня есть таблица с несколькими внешними ключами. Я хочу сделать два внешних ключа необязательными (то есть их можно установить в NULL). Когда я пытаюсь запустить команду, чтобы создать таблицу, я получаю ошибку:Может ли ключ SERIAL быть установлен на нуль?
ERROR: conflicting NULL/NOT NULL declarations for column "activityid" of table "eventassociation"
Если я пытаюсь создать таблицу без объявления NULL для внешних ключей, эти внешние ключи неявно становятся NOT NULL.
Как я могу сделать так, чтобы внешние ключи activityID
и roleID
могут быть пустыми?
Спасибо,
hypoz
Дополнительная информация:
Я бегу PostGreSQL (версия на кв-получить) на Ubuntu 12.04.
Это проблематично таблица:
CREATE TABLE eventAssociation (
associationID SERIAL PRIMARY KEY,
studentID VARCHAR(12) references volunteers(studentID),
eventID SERIAL references events(eventID),
activityID SERIAL references activities NULL,
roleID SERIAL references roles(roleID) NULL,
coordinatorConfirmed BOOLEAN,
userRevokeable BOOLEAN
)
И для справки, вот схема для activities
таблицы. Таблица ролей в значительной степени идентична, за исключением разных имен полей.
CREATE TABLE activities (
activityID SERIAL PRIMARY KEY,
eventID integer references events(eventID),
name varchar(128),
description TEXT
)
Ах, я был под впечатлением, что 'SERIAL' был синонимом для' integer'. Я полагаю, что я ошибаюсь, и серийный фактически означает целое число с последовательностью? –
Это решение отлично работает, спасибо. –
@ 64bit_twitchyliquid Вы можете прочитать подробную информацию о 'SERIAL' здесь: http://www.postgresql.org/docs/current/static/datatype-numeric.html –