嘿。
首先,我必须说这是我第一次尝试编写SQL,这意味着我是n00b。请耐心点..

现在,我正在尝试在数据库中创建一个名为“ push”的表,如下所示:

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字段(自动递增)将有所不同,因此它将满足该规则

如果组合应该是唯一的,请使其不带id

UNIQUE KEY(UDID, token));

关于php - MySQL不尊重UNIQUE和PRIMARY键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6088141/

10-09 17:50
查看更多