【发布时间】:2012-07-04 09:05:05
【问题描述】:
是否有等效于使用 InnoDB MySQL 数据库并允许在第二个键上自动递增的分组主键?
我要实现的是一个基于父对象 ID 存储图像 URL 的表,例如:
CREATE TABLE images (
parent_id INT(11) NOT NULL,
image_id INT(11) AUTO_INCREMENT, //will this work with a grouped primary key?
source_url VARCHAR(255) NOT NULL,
caption VARCHAR(255) NOT NULL,
) ENGINE = InnoDB;
所以对于 MyISAM,我可以这样做:
PRIMARY KEY(parent_id, image_id)
[edit] 使用触发器类似于:(对不起,我的 SQL 不是很强大)
delimiter //
DROP TRIGGER IF EXISTS test_img_trigger;
CREATE TRIGGER test_img_trigger BEFORE INSERT ON venue_images
FOR EACH ROW
BEGIN
DECLARE img_id INT UNSIGNED DEFAULT 0;
SELECT image_id + 1 INTO img_id FROM venue_images WHERE venue_id = NEW.venue_id;
UPDATE venue_images SET image_id = img_id WHERE venue_id = NEW.venue_id;
END IF;
END;//
delimiter;
【问题讨论】:
-
为分组列设置键而不是主键
标签: mysql