MySQL不尊重UNIQUE和PRIMARY键

Emi*_*mil 0 php mysql sql unique duplicates

嘿.
首先,我不得不说这是我第一次尝试编写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));
Run Code Online (Sandbox Code Playgroud)

这有效,但不如预期.如果我现在尝试在这里插入一些值,如下所示:

INSERT INTO push (UDID, token, lastpost)
VALUES ('123456789abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwqyz123456789', 211);
INSERT INTO push (UDID, token, lastpost)
VALUES ('123456789abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwqyz123456789', 211);
Run Code Online (Sandbox Code Playgroud)

在我看来,这会导致错误,因为UDID和令牌是相同的,但它根本不会触发任何错误,它只是插入副本.

我可能在这里遗漏了一些东西,但我找不到什么.如何使此返回预期结果?
谢谢.

Nan*_*nne 10

这个:

UNIQUE KEY(id, UDID, token));
Run Code Online (Sandbox Code Playgroud)

意味着这3个的组合应该是唯一的.对于2行,id字段(自动增量)将不同,因此它将满足该规则

如果组合应该是唯一的,那就不用了 id

UNIQUE KEY(UDID, token));
Run Code Online (Sandbox Code Playgroud)

  • 不要在UNIQUE键中传入`id`. (2认同)