У меня есть две таблицы с отношением один к одному. Table1 имеет составной первичный ключ, состоящий примерно из 4 столбцов. Внешний ключ Table2 устанавливается равным первичному ключу Table1.
Когда я пытаюсь использовать следующее предложение UPDATE, я получаю сообщение об ошибке:
UPDATE Table2
SET column1 = fakeTable.c1
FROM Table2 INNER JOIN
(
SELECT Table1.primaryKey
, (Table1.column3 + Table1.column4) AS c1
FROM Table1
) AS c1
ON Table2.foreignKey = fakeTable.primaryKey
Разве мне не разрешено ссылаться на ключи, как если бы они были столбцами?
NO
. Если отдельные поля что-то значат по отдельности, оставайтесь такими, какие есть. Введение нескольких элементов в одно и то же поле — это анти-шаблон SQL, который часто вызывает в будущем больше проблем, чем того стоит. Самый близкий подход, который я бы рекомендовал, - это иметь еще один столбец IDENTITY в таблице 1 и внешний ключ к нему. Вы можете по-прежнему поместить уникальный ключ в 4 поля идентификации. Это называется суррогатным ключом (другим ключом вместо составного ключа). 14.02.2012