LinuxForum.Fans
Тема

mySQL trigger

Автор: sangraf 8 сообщений 1128 просмотров
23.03.2020 13:28 · отредактировано #434338

tbl1, tbl2 таблицы
col1, col2, col3 столбы таблицы tbl1
sec1, sec2,sec3 столбы таблицы tbl2



если число tbl1 - col2 - id1>5 тогда добавить единицу, в ячейку tbl2 - sec2 - id2

как правильно написать триггер?

23.03.2020 16:44 · отредактировано #434340

Может потребоваться не один триггер, а даже два. На INSERT и на UPDATE таблицы.
Можно AFTER, потому что запись не предотвращается.
Только надо не для каждого ряда, а для одного, который вставляется или изменяется.
Проверять вашу величину.
IF <ваше условие> THEN <что делать>
Синтаксис триггеров для MySQL
https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

23.03.2020 17:17 #434341
ValentinK написал:
Может потребоваться не один триггер, а даже два. На INSERT и на UPDATE таблицы.
Можно AFTER, потому что запись не предотвращается.
Только надо не для каждого ряда, а для одного, который вставляется или изменяется.
Проверять вашу величину.
IF <ваше условие> THEN <что делать>
Синтаксис триггеров для MySQL
https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

Если начать с малого. Как прописать if до THEN?

text
IF col2.tbl1 < 5 THEN

как сюда вписать id1?

23.03.2020 17:38 #434342
sangraf написал:

как сюда вписать id1?

Это число или переменная или ещё один столбец?

23.03.2020 17:51 · отредактировано #434343
ValentinK написал:
[quote=sangraf]
как сюда вписать id1?

Это число или переменная или ещё один столбец?[/quote]
id это столбец.
Нужно после if указать адрес конкретной ячейки из таблицы(tbl1) - столбец(col2) - столбец(id)id=1

text

id | col1 | col2 | col3 |
 1 |      |   X  |      |

ячейку где стоит X

23.03.2020 18:04 #434344
"sangraf" написал:
Нужно после if указать адрес конкретной ячейки из таблицы(tbl1) - столбец(col2) - столбец(id)id=1

Так и пишите - id или - tbl.id
По идее, будет отниматься id из этой же строки.
Но!
Зачем отнимать id ума не приложу.
id ведь генерируется автоматически?
Каков смысл этого всего?

23.03.2020 18:11 · отредактировано #434346
ValentinK написал:
[quote="sangraf"]Нужно после if указать адрес конкретной ячейки из таблицы(tbl1) - столбец(col2) - столбец(id)id=1

Так и пишите - id или - tbl.id
По идее, будет отниматься id из этой же строки.
Но!
Зачем отнимать id ума не приложу.
id ведь генерируется автоматически?
Каков смысл этого всего?[/quote]
это не вычитание, это указание адреса ячейки. Те можно переписать например так: таблицы(tbl1)/столбец(col2)/столбец(id)id=1
не деление.
или так: таблицы(tbl1) Ж столбец(col2) Ж столбец(id)id=1

23.03.2020 18:23 #434347
"sangraf" написал:
это не вычитание, это указание адреса ячейки.

Хотите разнийу из разных строк таблицы?
Легко! Пишите что-то навроде
BEGIN
SELECT @id1 = SELECT id FROM tbl WHERE var = 1
UPDATE tbl SET col = col - @id1
END

Но зачем?

Войдите или зарегистрируйтесь, чтобы ответить.