如何防止创建表时的dupilcate值

时间:2016-09-10 17:07:49

标签: sql sql-server

假设用户名和电话号码在表定义时应该是唯一的,而不使用sql server中的唯一约束和检查约束。我不想为那个创建sp。请建议任何其他方法来防止sql中的重复列服务器r2 2008. Il

1 个答案:

答案 0 :(得分:1)

一种正确的方法(实际上是最好的方法)是使用唯一约束。根据您的描述,尚不清楚您是否需要一个或两个约束。如果您不想要一个独特的约束,您应该解释原因。

也就是说,如果您希望该对是唯一的:

 alter table add constraint unq_t_username_phonenumber unique (username, phonenumber);

或者你希望每一个都是独一无二的:

 alter table add constraint unq_t_username unique (username);
 alter table add constraint unq_t_phonenumber unique (phonenumber);

定义表时,您还可以在线执行单列唯一约束:

create table . . . (
    . . .,
    UserName varchar(255) not null unique,
    . . .
);

几乎等同于唯一约束的是唯一索引:

create unique index unq_t_username on t(username);

不同之处在于您可以命名约束。发生违规时此名称很方便,因为约束名称(但不是索引名称)通常在消息中。