2012-02-21 3 views
-4

Я комбинируя 2 таблицы в 1, используя следующие операторыИдентичность Increment

Select Calls.*,Patient.* 
INTO Calls2 
From Calls,Patient 

Теперь я установить один из столбца в качестве первичного ключа, но я не могу получить, что первичный ключ, чтобы иметь Удостоверение Increment. Что я должен сделать для этого?

Спасибо заранее, Мадху

+0

Это не «денормализация» вообще. Это просто инструкция SQL. Читайте здесь http://msdn.microsoft.com/en-us/library/ms190750.aspx и здесь http://msdn.microsoft.com/en-us/library/ms188029.aspx –

+1

Это крест-соединение поэтому, если в одной из таблиц нет строки '<= 1', для каждого столбца будут повторяющиеся значения. Как вы создаете ПК из этого? –

+0

@ Мартин. Идентичность будет ПК, конечно. Почему нам все равно, являются ли фактические данные уникальными? :-) –

ответ

1

Во-первых, вы должны знать, что вы делаете декартовую продукцию своих таблиц. Если вы хотите добавить столбец идентификаторов, когда вы создаете таблицу, то сделайте следующее:.

Select IDENTITY(INT,1,1) ID, Calls.*,Patient.* 
INTO Calls2 
From Calls,Patient 
0

Использование среды SQL Server Management Studio,

правой кнопки мыши таблицу и нажмите Design. В поле Column Properties внизу правого окна прокрутите вниз до Identity Specification. Разверните это, а затем измените значение (Is Identity) на Yes.

Однако, если у вас уже есть столбец Id, из таблицы Calls или Patient это может не сработать. Я бы предложил создать новый столбец Id и настроить столбец Id, как указано выше.

1

Выполнить CREATE TABLE «жесткий» способ? Вы можете легко создать такую ​​команду с sys.columns.

Или выберите объект в студии Management Studio. Просто имейте в виду, что это отбрасывает таблицу и воссоздает ее, поэтому, если таблица большая, ожидайте, что ваше приложение закроется некоторое время.

0

Вы не можете включить существующий столбец в столбец идентификации * Если вам нужен столбец идентификации, добавьте новая колонка:

ALTER TABLE Calls2 ADD Calls2Id int NOT NULL IDENTITY(1,1) ; 

Или, если вам нужно использовать одну из существующих столбцов, вы должны будете использовать явную CREATE TABLE, чтобы определить таблицу, а не SELECT ... INTO. Вам также необходимо использовать SET IDENTITY INSERT Calls2 ON до вашего INSERT INTO.

CREATE TABLE Calls2 (
    ...columns... 
) ; 
SET IDENTITY_INSERT Calls2 ON ; 
INSERT INTO Calls2 (... columns ...) SELECT ... columns ... FROM Calls, Patient ; 
SET IDENTITY_INSERT Calls2 OFF ; 

* Хотя дизайнер может притворяться, что превратил его в столбец идентичности, на самом деле это не то, что происходит. Как упоминает Аарон Бертран в своем ответе, таблица воссоздается со столбцом, обозначенным как столбец идентичности.

+0

[Да, вы можете ...] (http://stackoverflow.com/questions/6084572/how-to-set-auto-increment-after-creating-a-table-without-any-data-loss/6086661 # 6086661) –

+0

Я забыл, что дизайнер позволяет это сделать. Добавлена ​​заметка, поясняющая (надеюсь). Благодарю. – eric

+0

Это не то, что я имел в виду, потому что вся таблица воссоздана. Вы можете сделать это как изменение только метаданных с помощью 'ALTER TABLE ... SWITCH' –

Смежные вопросы