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

Прочитал тут

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

Спасибо за внимание.
...
Рейтинг: 0 / 0
27.04.2018, 11:33
    #39637263
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автозаполнение вторичного ключа
TSPпривязал к нему вторичный. Как его автозаполнить?Ну сперва неплохо бы рассказать, как именно "привязал". И что значит "автозаполнить".
...
Рейтинг: 0 / 0
27.04.2018, 11:42
    #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
27.04.2018, 11:55
    #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
27.04.2018, 12:09
    #39637321
TSP
TSP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автозаполнение вторичного ключа
Т.е. проверка идёт по первому, а действие со вторым?
...
Рейтинг: 0 / 0
27.04.2018, 12:11
    #39637324
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автозаполнение вторичного ключа
Какая проверка? какое действие? Вы вообще о чём?
...
Рейтинг: 0 / 0
27.04.2018, 12:16
    #39637337
TSP
TSP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автозаполнение вторичного ключа
В триггере:после вставки new.id (проверка), с которым только что работала первая таблица, переноситься во вторую (действие).

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


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