SQL Server выбирает первичный ключ из таблицы, где ключ содержит несколько столбцов - PullRequest
0 голосов
/ 10 ноября 2009

Я работаю над устаревшей базой данных. Я не могу изменить схему :( в нескольких таблицах первичный ключ использует несколько столбцов.

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

В настоящее время я объединяю различные столбцы PK и сохраняю их как уникальный идентификатор, когда я помещаю данные обратно в таблицу.

Теперь мне стало интересно, есть ли более эффективный способ сделать это. Исходя из фона MySQL, я не знаю ни одного, но думал, что SQL Server 2005 может иметь функцию

SELECT PRIMARYKEY() as pk, ...  FROM table WHERE ... 

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

Я искал и не мог ничего найти. Возможно, я просто суетливый, но мне не нравится уловка конкатенации.

DC

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

В SQL Server нет эквивалента PRIMARYKEY (), о котором я бы знал, на самом деле. Вы можете обратиться к представлениям системного каталога, чтобы выяснить, какие столбцы составляют первичный ключ, но вы не можете просто выбрать значения первичного ключа с помощью вызова функции.

Я бы согласился со StarShip3000 - для чего вы объединяете свои значения PK? Хотя я не думаю, что составной первичный ключ, состоящий из нескольких столбцов, обязательно является хорошей идеей, если это устаревшая система, и вы не можете ее изменить, я бы не стал связывать значения PK при чтении, а затем разделить их снова, когда вы записываете свои данные обратно. Просто оставьте структуру как есть - составные ключи обычно не рекомендуются, но они действительно поддерживаются, без проблем.

1 голос
/ 10 ноября 2009

"В настоящее время я объединяю различные столбцы PK и сохраняю их в качестве уникального идентификатора, когда я помещаю данные обратно в таблицу." Разве вы не можете просто сохранить pk как два столбца в целевой таблице и использовать его для соединения с двумя столбцами в исходной таблице?

Какая выгода от объединения дает вам здесь?

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