MySQL不尊重UNIQUE和PRIMARY-KEY
嘿。
首先,我不得不说这是我第一次尝试编写SQL,这意味着我是一个n00b。有一些耐心,请..MySQL不尊重UNIQUE和PRIMARY-KEY
现在,我想创建一个在我的数据库名为“推”像这样的表:
CREATE TABLE push
(id int NOT NULL AUTO_INCREMENT,
UDID varchar(40) NOT NULL,
token varchar(64) NOT NULL,
lastpost int DEFAULT '0',
PRIMARY KEY(id),
UNIQUE KEY(id, UDID, token));
这样的作品,但并不如预期。如果我现在尝试在这里插入一些值,像这样:
INSERT INTO push (UDID, token, lastpost)
VALUES ('123456789abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwqyz123456789', 211);
INSERT INTO push (UDID, token, lastpost)
VALUES ('123456789abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwqyz123456789', 211);
那会,在我眼里,导致一个错误,因为UDID和令牌是平等的,但它不只是触发任何错误的话,那插入副本。
我可能错过了这里的东西,但我找不到什么。我怎样才能使这个返回预期的结果?
谢谢。
这样的:
UNIQUE KEY(id, UDID, token));
意味着那些3的组合应该是唯一的。 id字段(自动递增)将是2行不同,所以这将满足该规则
如果组合应该是唯一的,使其没有id
UNIQUE KEY(UDID, token));
这里该位
UNIQUE KEY(id, UDID, token));
确保您可以随时为UDID输入重复的值,它会被接受作为测试uniqeness包括ID
;其定义为auto_increment
。从这个键删除ID
,你应该有检查你想即
CREATE TABLE push
(id int NOT NULL AUTO_INCREMENT,
UDID varchar(40) NOT NULL,
token varchar(64) NOT NULL,
lastpost int DEFAULT '0',
PRIMARY KEY(id),
UNIQUE KEY(UDID, token)); -- ID now excluded here
我将如何保证双方和独特的UDID和令牌呢? – Emil 2011-05-22 13:21:14
如果你想同时UDID
和token
是唯一的,或者换句话说没有两个UDID应该允许相同也不两个令牌应该被允许是一样的,请尝试:
CREATE TABLE push
(id int NOT NULL AUTO_INCREMENT,
UDID varchar(40) NOT NULL,
token varchar(64) NOT NULL,
lastpost int DEFAULT '0',
PRIMARY KEY(id),
UNIQUE KEY(UDID),
UNIQUE KEY(token)
) ;
谢谢:) – Emil 2011-05-22 14:32:57
我将如何确保双方唯一的UDID和令牌? – Emil 2011-05-22 13:23:52
请勿在UNIQUE键中传入'id'。 – 2011-05-22 13:50:22