powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Автозаполнение вторичного ключа
8 сообщений из 8, страница 1 из 1
Автозаполнение вторичного ключа
    #39637222
TSP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TSP
Гость
Все привет, снова я. Проблема: Происходит автоинкремент первичного ключа, привязал к нему вторичный. Как его автозаполнить?

Прочитал тут

Но что-то мне это не очень молго, и то, там явный костыль на переменную, о чём сам и говорит автор.

Спасибо за внимание.
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637263
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TSPпривязал к нему вторичный. Как его автозаполнить?Ну сперва неплохо бы рассказать, как именно "привязал". И что значит "автозаполнить".
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637277
TSP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TSP
Гость
Код таблицы:

CREATE TABLE `orders_status` (
`order_id` int(11) NOT NULL,
`order_status` enum('accept','cook','deliver','delivered','cancel') NOT NULL,
KEY `order_id_idx` (`order_id`),
CONSTRAINT `order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`order_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8


В основной таблице идёт автоинкремент. Соответственно, при создании экземпляра основной таблицы этот же параметр должен переноситься (создаваться?) во второй таблице.
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637297
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я верно понимаю, что хотелка такая: как только в основной таблице (на стороне "один") создаётся запись, в показанной таблице (на стороне "много") должна так же создаваться запись, имеющая соответствующее значение в референсном поле?
Если да - то не вижу проблемы, с задачей элементарно справится триггер AFTER INSERT:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
mysql> create table t1(id serial primary key, val int);
Query OK, 0 rows affected (0.35 sec)

mysql> create table t2(id serial primary key, val int, t1_id bigint unsigned not null, foreign key idx (t1_id) references t1(id));
Query OK, 0 rows affected (0.21 sec)

mysql> create trigger tr after insert on t1 for each row insert into t2 (val, t1_id) select new.val*3, new.id;
Query OK, 0 rows affected (0.26 sec)

mysql> insert into t1(val) select 1 union select 5;
Query OK, 2 rows affected (0.22 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t1;
+----+------+
| id | val  |
+----+------+
|  1 |    1 |
|  2 |    5 |
+----+------+
2 rows in set (0.03 sec)

mysql> select * from t2;
+----+------+-------+
| id | val  | t1_id |
+----+------+-------+
|  1 |    3 |     1 |
|  2 |   15 |     2 |
+----+------+-------+
2 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637321
TSP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TSP
Гость
Т.е. проверка идёт по первому, а действие со вторым?
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637324
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая проверка? какое действие? Вы вообще о чём?
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637337
TSP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TSP
Гость
В триггере:после вставки new.id (проверка), с которым только что работала первая таблица, переноситься во вторую (действие).

Я пытался через тригерр на вторую таблицу это всё сделать.
...
Рейтинг: 0 / 0
Автозаполнение вторичного ключа
    #39637369
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TSPЯ пытался через тригерр на вторую таблицу это всё сделать.Триггер срабатывает на определённое действие с данными в определённой таблице. Ты что хочешь? чтобы при действии (вставке) с данными первой таблицы было выполнено действие со второй таблицей. Соответственно триггер - на первой таблице.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Автозаполнение вторичного ключа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]