datetime作为mysql数据库中的唯一键

datetime作为mysql数据库中的唯一键,mysql,Mysql,我的数据库表中有一个datetime(名称:lud)变量。它以这种格式注册2011-04-11 07:08:02。现在,我想结合一个article\u id创建一个唯一键:article\u id+lud。 但对于唯一的关键lud部件,只需要2011-04-11 07:08。 例如lud 2011-04-11 07:08+文章id 45试试这个 CONCAT(DATE_FORMAT(lud,'%Y-%m-%d %H:%i'),article_id) 试试这个 CONCAT(DATE_FORMA

我的数据库表中有一个datetime(名称:lud)变量。它以这种格式注册2011-04-11 07:08:02。现在,我想结合一个article\u id创建一个唯一键:article\u id+lud。 但对于唯一的关键lud部件,只需要2011-04-11 07:08。 例如lud 2011-04-11 07:08+文章id 45试试这个

CONCAT(DATE_FORMAT(lud,'%Y-%m-%d %H:%i'),article_id)
试试这个

CONCAT(DATE_FORMAT(lud,'%Y-%m-%d %H:%i'),article_id)

作为一种变体,您可以将
lud
字段的类型更改为VARCHAR,并使用index的length选项

例如:

CREATE TABLE mytable(
  article_id INT(11) DEFAULT NULL,
  lud VARCHAR(19) DEFAULT NULL,
  UNIQUE INDEX UK_mytable (article_id, lud (16))
)
ENGINE = INNODB;

INSERT INTO mytable VALUES 
  (1, '2011-04-11 07:08:11');
Query OK, 1 row affected (0.01 sec)

INSERT INTO mytable VALUES 
  (1, '2011-04-11 07:09:11');
Query OK, 1 row affected (0.01 sec)

INSERT INTO mytable VALUES 
  (1, '2011-04-11 07:09:30');
ERROR 1062 (23000): Duplicate entry '1-2011-04-11 07:09' for key 'UK_mytable'

作为一种变体,您可以将
lud
字段的类型更改为VARCHAR,并使用index的length选项

例如:

CREATE TABLE mytable(
  article_id INT(11) DEFAULT NULL,
  lud VARCHAR(19) DEFAULT NULL,
  UNIQUE INDEX UK_mytable (article_id, lud (16))
)
ENGINE = INNODB;

INSERT INTO mytable VALUES 
  (1, '2011-04-11 07:08:11');
Query OK, 1 row affected (0.01 sec)

INSERT INTO mytable VALUES 
  (1, '2011-04-11 07:09:11');
Query OK, 1 row affected (0.01 sec)

INSERT INTO mytable VALUES 
  (1, '2011-04-11 07:09:30');
ERROR 1062 (23000): Duplicate entry '1-2011-04-11 07:09' for key 'UK_mytable'