2017-09-06 48 views
0

我正在使用表将某些ID转换为其他ID,并且相反。SQL上的自动增量字段不是主键

+--------+-----------------------------------------------+ 
| userId | visitorId          | 
+--------+-----------------------------------------------+ 
|  1 | 015dc155838800b156253da37f0004078003b07000c48 | 
|  2 | 015dbfdaeac50014c675298c726b04072003e06a00918 | 
|  3 | 015dc26525ea00032eed79a4737d04092003a08a00978 | 
+--------+-----------------------------------------------+ 

我这样做使用此代码

CREATE TABLE Users (
    userId int PRIMARY KEY AUTO_INCREMENT, 
    visitorId varchar(255), 
); 

简单,不是吗?我注册每个新访客,并为她生成一个唯一的ID(userId)。但是如何避免插入两次相同的visitorId

INSERT INTO Users (visitorId) VALUE ("1234"), ("1234"), ("1234") 
+--------+-----------+ 
| userId | visitorId | 
+--------+-----------+ 
|  1 | 1234  | 
|  2 | 1234  | 
|  3 | 1234  | 
+--------+-----------+ 
+0

添加一个唯一索引上已经尝试过列 –

+0

。由于字段'userId'会自动增加,所以'(userId,visitorId)'集合不会是唯一的 – dinigo

+0

只有'visitorId'列 –

回答

4

产品添加了独特的列

CREATE TABLE Users (
    userId int PRIMARY KEY AUTO_INCREMENT, 
    visitorId varchar(255) UNIQUE, 
); 
5

你想在visitorId列的唯一索引或约束:

alter table users add constraint unq_users_visitorId unique (visitorId); 
+0

你的答案也是对的。但是因为我想创建桌子,所以我接受了@ i-man的桌子 – dinigo