2017-08-09 57 views
2

我有一個主要的大表,我不得不把它放到第三範式和小表中(用主鍵和外鍵鏈接它們)。這張桌子是關於租借書籍的。創建唯一的主鍵忽略重複

我有一個客戶表,我需要爲其創建一個主鍵。在主大表中有customer_id的重複項,因爲整個表是用於出租書籍的,所以一個客戶可能有多於一個的出租。

我目前正在嘗試添加主鍵的表不會有任何空值或重複項,但我不確定如何爲此創建主鍵而不出現錯誤 - 不確定如何使其唯一。

CREATE TABLE customer AS 
    SELECT cust_id, country_id, name, address, postcode 
    FROM BOOKS 
    WHERE cust_id != 0; 


ALTER TABLE customer 
    ADD PRIMARY KEY (cust_id); 

有沒有人能幫助我如何創建我的客戶表的主鍵,但只是把每一個獨特的cust_id從主表。

+1

將DISTINCT添加到SELECT,因此您只獲取一行而不重複。 「客戶」表不應該有多次表示同一個客戶。 – pmbAustin

+0

@pmbAustin我有兩種類型的客戶我的客戶的專業化,他們繼承cust_id的主鍵,我已經嘗試使用上面的相同的alter table add主鍵命令,但它出現了一個錯誤。另外一個目前名爲cust_id和一個customer_id,我是否重命名爲相同?你知道我會怎麼做嗎? –

+0

其中customer_id列來自哪個表? –

回答

0

在SQL Server中,直接添加唯一密鑰的方法是使用IDENTITY。標識字段是整數字段,可以按指定的起始值和間隔自動填充連續的值。如果您沒有指定時間間隔,則它將從1開始,並在每次分配一個值時將值增加1。

雖然通常在創建表格時完成,但您可以在步驟ALTER TABLE中執行此操作,並在添加到現有表格時分配值。我明確指定了與默認值相匹配的起始值和間隔,以顯示語法:

ALTER TABLE customer 
    ADD cust_id int not null PRIMARY KEY IDENTITY(1,1)