Является ли эквивалент сгруппированным первичным ключом с использованием базы данных InnoDB MySQL и позволяет автоинкремент на втором ключе?MySQL: сгруппированный первичный ключ с InnoDB
То, что я пытаюсь выполнить это таблица для хранения изображений URL, на основе родительского объекта ID что-то вроде:
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;
Сделать ключ для столбцов сгруппированы вместо первичного ключа – diEcho