У меня есть две таблицы. Таблицы A и B. В таблице A есть столбец с автоинкрементом в качестве первичного ключа.
id name date_created
1 Kletian 12-12-12 12:12:12
2 Vormav 12-12-12 12:12:13
3 Agrias 12-12-12 12:12:14
4 Ramza 12-12-12 12:12:15
Таблица B должна иметь внешний ключ, ссылающийся на идентификатор в таблице A. Но, поскольку идентификатор является автоинкрементным (генерируется mysql), я не могу назначить его с помощью программирования на стороне сервера (я использую PHP для вставки). Но в таблице A есть столбец date_created с атрибутом datetime.
Обычно эта таблица B должна выглядеть так:
id images
1 abc.jpg
1 def.png
1 ghi.jpg
2 jkl.png
3 mno.jpeg
3 pqr.png
и это мой план для таблицы B:
date_created images
12-12-12 12:12:12 abc.jpg
12-12-12 12:12:12 def.png
12-12-12 12:12:12
12-12-12 12:12:13
12-12-12 12:12:14
12-12-12 12:12:14 pqr.png
Замечания:
Порядковый номер: Возьмите один столбец в таблице который вы увеличиваете при вставке новой записи (не автоинкремент), например:
seq_no | name
1 | Kletian
3 | Agrias
Поэтому, когда вы хотите сделать новую запись в таблице , просто получить MAX()
из seq_no
и увеличить его на 1.
Также в таблице B сделайте seq_no
как внешний ключ, как:
seq_no | images
1 | abc.jpg
3 | efg.jpg
Вот что вы хотели бы для своей таблицы DDL (схема):
CREATE TABLE IF NOT EXISTS `table_a` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT,
`name` TEXT NOT NULL,
`created_date` TIMESTAMP NOT NULL DEFAULT NOW(),
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `table_b` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT,
`image` TINYTEXT NOT NULL,
`created_date` TIMESTAMP NOT NULL DEFAULT NOW(),
`table_a_id` MEDIUMINT NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`table_a_id`) REFERENCES table_a(id) ON DELETE CASCADE
);
Таблица Б будет иметь ссылку на внешний ключ Таблица А.
Я не уверен, что смогут внести эти изменения, но это было бы идеальным решением.