我有一个像这样的表模式:
CREATE TABLE statuses
(
id int,
lang int,
name varchar(30)
);
ALTER TABLE `statuses` ADD PRIMARY KEY (`id`, `lang`) ;
ALTER TABLE `statuses` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT ;
该表包含一些可能使用不同语言的数据。因此,我希望对应于相同数据但使用不同语言的每一行具有相同id
但不同的lang
. 这样双键是唯一的。我想使用以下查询来插入和更新值。
INSERT INTO statuses (id, lang, name)
VALUES (null,1,'Third'),(null,2,'Trzeci')
ON DUPLICATE KEY UPDATE name = VALUES(name)
如果我想更新值,它工作得很好,但是当我想实际插入一些东西时它会中断,因为自动增量功能会id
为每个新创建的行在列中放置不同的值。
在这里您可以查看 SQLfiddle:http ://sqlfiddle.com/#!2/62fbfd/1
是否可以更正我的表结构或我的 sql 查询来完成这项工作,或者我应该先使用多个查询来插入第一行以指示新id
行,然后再用这个新创建的行插入其余行id
?我更喜欢只使用一个查询,所以我在这里问。