SQL (доступ) - добавить новое поле в составной первичный ключ - PullRequest
1 голос
/ 02 августа 2009

У меня есть таблица с именем table1, которая имеет составной первичный ключ, используя «ScreenId» и «ActivityItemId». Я добавил новое поле ProductId с ограничением NOT NULL. Я хочу добавить ProductId в составной первичный ключ.

Я думал, что это будет работать

db.execute "ПЕРВИЧНЫЙ КЛЮЧ ALTER TABLE table1 (ScreenId, ActivityItemId, ProductId)"

но я получаю ошибку, я думаю, что этот синтаксис работает только при создании таблицы.

Может кто-нибудь помочь мне с SQL? (Между прочим, я не могу использовать решение Visual Basic здесь, на самом деле я использую интерфейс ruby ​​для запуска SQL, поэтому он должен быть только в SQL)

спасибо макс

Ответы [ 3 ]

6 голосов
/ 02 августа 2009

Попробуйте сбросить ваш текущий первичный ключ, а затем создайте новый:

ALTER TABLE table1 DROP CONSTRAINT pk_name

ALTER TABLE table1 ADD CONSTRAINT pk_name PRIMARY KEY (ScreenId, ActivityItemId, ProductId)

3 голосов
/ 02 августа 2009

Подумайте о суррогатном ключе вместо составного ключа. Вы не хотите менять свою схему каждый раз, когда меняется ваша бизнес-логика.

Возможно, стоит сохранить эти отношения как уникальные ограничения и добавить суррогатный ключ.

0 голосов
/ 03 августа 2009

Вы пытались изменить первичный ключ в представлении конструктора вместо использования SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...