照片库的MySQL数据库概念

时间:2013-10-19 14:17:13

标签: mysql sql

我有此表用于存储照片信息:

CREATE TABLE foto (
id int(11) NOT NULL auto_increment,
id_galerie int(11) NOT NULL,
filename varchar(255) NOT NULL,
sort_nr int(11) NOT NULL default 1,
UNIQUE KEY (id_galerie, sort_nr),
PRIMARY KEY (id)
)

我需要自动增加列 sort_nr ,但仅限于一个 id_galerie 。 所以我尝试了这个插入查询:

INSERT INTO foto (id_galerie, filename)
VALUES
(1, 'filename'),
(1, 'another filename'),
(1, 'anothername'),
(1, 'another value')
ON DUPLICATE KEY UPDATE sort_nr = sort_nr+1

但它引发了一个错误(#1062 - 密钥'id_galerie'的重复条目'1-2')。 如果密钥不唯一,如何强制 sort_nr 自动递增?

1 个答案:

答案 0 :(得分:1)

ON DUPLICATE KEY检查主键,而不是唯一索引,这就是您看到错误的原因。不确定,没有额外的查询甚至可能。但你可以使用INSERT INTO SELECT:

来做到这一点
   INSERT INTO foto (filename, id_galerie, sort_nr)
   SELECT 'filename', 1, (SELECT IFNULL(max(sort_nr) + 1,1) 
        FROM foto WHERE id_galerie = 1) AS `SortNumber`