创建唯一主键以忽略重复项

时间:2017-08-09 20:50:58

标签: sql sql-server database oracle

我有一个主要的大表,我必须将其放入第三范式和较小的表(使用主键和外键链接它们)。该表是关于租借书籍的。

我有一个客户表,我需要为其创建一个主键。在主要的大表中有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 个答案:

答案 0 :(得分:0)

在SQL Server中,添加唯一键的直接方法是使用IDENTITY。标识字段是整数字段,可以按指定的起始值和间隔自动填充连续值。如果未指定间隔,则它将从1开始,并在每次分配值时将值增加1。

虽然通常在创建表时完成,但您可以在ALTER TABLE步骤中执行此操作,并在添加到现有表时分配值。我已明确指定了与默认值匹配的起始值和间隔以显示语法:

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