2017-08-09 58 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)