2017-01-04 7 views
-1

Я добавил первичный ключ ограничения в свою таблицу, и запрос успешно завершился. Дилемма, с которой я столкнулся, заключается в том, что я не могу найти столбец первичного ключа в своей таблице.Не удается найти столбец первичного ключа в таблице

ALTER TABLE salesdata 
ADD CONSTRAINT pk_salesdata PRIMARY KEY("Address_of_New_Home","Sq_Ft","Build_Spec", "Realtor_Sale","Can","Actual_Sale_Date") 

Когда я делаю:

select * from salesdata 

Он показывает все столбцы до и не столбец первичного ключа (pk_salesdata).

И еще более непонятно, когда:

select pk_salesdata from salesdata 

База данных показывает:

ERROR: column "pk_salesdata" does not exist 

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

+4

'' 'pk_salesdata''' - это имя ограничения первичного ключа, ваш первичный ключ представляет собой комбинацию всех столбцов внутри скобок. – Anand

+0

Да, это имя –

+3

Это не столбец в базе данных, который вы можете выбрать, это имя ограничения. – Anand

ответ

0

Вы создаете PRIMARY KEY, но ...

  1. вы создаете первичный ключ, состоящий из столбцов "Address_of_New_Home", "Sq_Ft", "Build_Spec", "Realtor_Sale", "Can", "Actual_Sale_Date" - это не хорошая идея

  2. ваш первичный ключ имеет имя псевдонима pk_salesdata, но это только имя ограничения

  3. вы не создали новый столбец

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

ALTER TABLE salesdata ADD COLUMN mynewautoincrementid SERIAL PRIMARY KEY; 
+0

Спасибо Deadsheep, почему это не очень хорошая идея? Адрес New Home избыточен, поэтому необходимо сделать ограничение, которое не затмевает адрес. Добавление mynewautoincrementid просто даст каждой строке целое число, которое не будет препятствовать поступлению дубликатов. –

+0

Потому что с более индексированными столбцами (в данном случае с кластеризованным индексом) больше ввода-вывода на DML. В составленном кластерном индексе в фоновом режиме создается новый невидимый столбец, который уникален и имеет только один столбец. Ваши qries не могут правильно использовать индексы, ваши запросы медленнее. – Deadsheep39

0

Первичного Kay этого ограничения в таблице, когда вы добавляете первичный ключ к любому колонку вы можете выбрать имя столбца для отображения данных

0

Похоже, вы завернули столбцы, которые хотите включить в свои первичные ключи, в двойные кавычки. Это не так, как эта команда работает. Снимите кавычки, повторно запустите команду и посмотрите, что произойдет.

ALTER TABLE salesdata 
ADD CONSTRAINT pk_salesdata PRIMARY KEY(Address_of_New_Home,Sq_Ft,Build_Spec, Realtor_Sale,Can,Actual_Sale_Date) 

Возможно, было бы проще добавить первичный индекс через графический интерфейс SQL.

Вот страница документации MS для создания первичного ключа.

https://msdn.microsoft.com/en-us/library/ms189039.aspx 

Примечание: Поскольку добавление первичного ключа не ожидается, оно будет доступно в виде столбца.