Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Триггер / 8 сообщений из 8, страница 1 из 1
04.04.2015, 17:00:42
    #38927077
cat94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Доброе время суток, столкнулся с такой проблемой. У меня есть 2 таблицы t1 и t2, я хочу чтобы при добавление записи во вторую таблицу, в первой таблицы значение в одной из строк увеличивалось на 1.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
DELIMITER //
CREATE TRIGGER ins after insert ON t2
FOR EACH row
BEGIN
update t1
SET a = a + 1 
 where b = New.b and c = New.c ;
 
end//



Проблема в том что 'с' является частью атрибута 'ID' из таблицы t3 (которая связана с t2 ).

Вопроса состоит в том можно ли как то с помощью запроса указать в триггере этот 'с'.
...
Рейтинг: 0 / 0
04.04.2015, 17:06:18
    #38927079
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
В UPDATE можно указать несколько таблиц, см. UPDATE Syntax .
...
Рейтинг: 0 / 0
11.04.2015, 18:30:36
    #38933881
cat94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Ничего не получается с триггером.

Попробовал

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DELIMITER //
CREATE TRIGGER ins after insert ON t2
FOR EACH row
BEGIN
update t1
JOIN t3 ON t2.t2ID = t3.t3ID
SET a = a + 1 
 where b = New.b and c = New.c ;
 
end//



никакого результата.
...
Рейтинг: 0 / 0
12.04.2015, 00:16:02
    #38934003
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Ну не лечим мы по фотографии! DDL в нормальном виде покажите.
...
Рейтинг: 0 / 0
12.04.2015, 10:26:14
    #38934067
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
cat94
Код: sql
1.
2.
update t1
JOIN t3 ON t2.t2ID = t3.t3ID
...
Рейтинг: 0 / 0
12.04.2015, 14:42:16
    #38934139
cat94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Akina,
Прошу прощения

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE t1
(t1ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
a INT,
b INT,
c INT);

CREATE TABLE t2
(t2ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int,
b int,
t3ID int NOT NULL,
FOREIGN KEY (t3ID ) REFERENCES t3 (t3ID)
ON DELETE CASCADE ON UPDATE CASCADE);

CREATE TABLE t3
(t3ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
 c int)



Вот код таблиц.

И мне надо сделать такой триггер который после insert в таблицу t2 обновлял поле 'a' в таблице t1 на 1 (a = a+1) где b = new.b и c =new.c проблема в том, что 'с' находится в таблице t3 и напрямую я не создаю new.c, а только new.t3ID в котором есть нужные мне 'c'.
...
Рейтинг: 0 / 0
13.04.2015, 07:36:21
    #38934421
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
cat94Akina,
Прошу прощения

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE t1
(t1ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
a INT,
b INT,
c INT);

CREATE TABLE t2
(t2ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int,
b int,
t3ID int NOT NULL,
FOREIGN KEY (t3ID ) REFERENCES t3 (t3ID)
ON DELETE CASCADE ON UPDATE CASCADE);

CREATE TABLE t3
(t3ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
 c int)



Вот код таблиц.

И мне надо сделать такой триггер который после insert в таблицу t2 обновлял поле 'a' в таблице t1 на 1 (a = a+1) где b = new.b и c =new.c проблема в том, что 'с' находится в таблице t3 и напрямую я не создаю new.c, а только new.t3ID в котором есть нужные мне 'c'.

правильная формулировка задачи, даёт в подавляющем большинстве случаев сразу решение.

Есть три таблицы. нужен тригер для второй, который :
-в таблице 3 по внешнему ключу увеличит счётчик на еденицу.
- затем в таблице 1, пользуясь новым значением в таблице2(b) и новым значением счётчика(с), обновит счётчик в таблице 1

ПОДСКАЗКА.
так можно,
Код: sql
1.
2.
3.
4.
UPDATE mytable 

SET count_field = @i := count_field + 1
WHERE id = 300;
...
Рейтинг: 0 / 0
13.04.2015, 07:41:12
    #38934422
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
alex564657498765453правильная формулировка задачи, даёт в подавляющем большинстве случаев сразу решение.Но чтобы правильно задать вопрос, надо знать бОльшую часть ответа :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Триггер / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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