SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.08.2010 10:29:31

lkote
Завсегдатай
Зарегистрирован: 07.07.2010
Сообщений: 25

Возможно ли оператору Update передать результат Select как это работает в Insert

Приет мастерам
Уважаемые мастера помогите плиз
У меня естть табл находящаяся на сервере сбора данных.

CREATE TABLE TabN1(
  ID TEXT DEFAULT NULL,
  CURVAL INT (10) DEFAULT NULL,
  NETVAL INT (10) DEFAULT NULL
)
ENGINE = MYISAM;

и есть 2 федеративные таблицы
CREATE TABLE TabN2(
  ID TEXT DEFAULT NULL,
  CURVAL INT (10) DEFAULT NULL,
  NETVAL INT (10) DEFAULT NULL
)
CREATE TABLE TabN3(
  ID TEXT DEFAULT NULL,
  CURVAL INT (10) DEFAULT NULL,
  NETVAL INT (10) DEFAULT NULL
)
Событие на сервере должно отслеживать ситуацию как толко на сервере в поле NETVAL<>CURVAL для какого нибудь ID надо проапдейтить поле NETVAL федеративных таблиц с таким же ID, а на самом сервере для такой строки проапдейтить поле CURVAL==NETVAL. Я пытаюсь это сделать при помощи
оператора UPDATE но во всех примерах фиксированный синтаксис Update Table Set Fiel=4;

Отредактированно lkote (03.08.2010 11:23:29)

Неактивен

 

#2 03.08.2010 12:23:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Возможно ли оператору Update передать результат Select как это работает в Insert

Честно говоря, не понял в чем проблема. Пишете триггер BEFORE INSERT, который
будет делать UPDATE в удаленную табличку со значением WHERE ID = NEW.ID,
а текущую таблицу обновляете простым SET NEW.CURVAL = NEW.NETVAL.

Неактивен

 

#3 03.08.2010 12:51:01

lkote
Завсегдатай
Зарегистрирован: 07.07.2010
Сообщений: 25

Re: Возможно ли оператору Update передать результат Select как это работает в Insert

Я представляю как скоприровать первоначальную таблицу в темповую и выполнить как вы говрите UPDATE NEW SET NEW.CURVAL = NEW.NETVAL.
потом сделать DELETE FROM TableSource; потом выполнить INSERT INTO TableSource (columns) SELECT columns FROM NEW;
но не пойму как потом обновить поле в фед таблиц. Дайте плиз конструкцию для примера посидим покумекаем.

Неактивен

 

#4 03.08.2010 13:14:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Возможно ли оператору Update передать результат Select как это работает в Insert

Эээ... зачем временные таблицы?

UPDATE TabN2 SET CURVAL = NEW.CURVAL, NETVAL = NEW.NETVAL WHERE ID = NEW.ID;

Неактивен

 

#5 03.08.2010 14:13:51

lkote
Завсегдатай
Зарегистрирован: 07.07.2010
Сообщений: 25

Re: Возможно ли оператору Update передать результат Select как это работает в Insert

Не работает такое решение говорит неизветсное NEW.ID

Неактивен

 

#6 03.08.2010 14:22:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Возможно ли оператору Update передать результат Select как это работает в Insert

В триггере?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson