Старый 07.07.2010, 21:56   #1
Iceangel_
 
Аватар для Iceangel_
 
Регистрация: 01.07.2010
Сообщений: 45
Репутация: 25
По умолчанию ON DUPLICATE KEY UPDATE - фейк?

Гема описывал способ, апдейта данных посредством ON DUPLICATE KEY UPDATE в инсерте(http://www.xakep.ru/magazine/xa/108/076/1.asp)
Цитата:
Но основная фишка этой конструкции состоит в том, что с ее помощью можно легко апдейтить другие таблицы.
У троих затестивших вываливается ошибка подобная этой - Unknown column 'users.password' in 'field list'.У кого-нибудь получалось на практике провести апдейт в другой таблице данным методом?
И если у кого выходило, для реализации нужны особые условия не упомянутые в статье?

Последний раз редактировалось Iceangel_; 07.07.2010 в 22:01..
Iceangel_ вне форума   Ответить с цитированием
Старый 08.07.2010, 10:36   #2
geezer.code
 
Аватар для geezer.code
 
Регистрация: 05.07.2010
Сообщений: 4
Репутация: 1
По умолчанию

Код:
mysql> create table users (name varchar(60) NOT NULL default '',   password varchar(32) NOT NULL default '',  email varchar(60) NOT NULL default '', joindate int(10) unsigned NOT NULL default '0',  PRIMARY KEY (name)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.03 sec)

mysql> create table users2 (name varchar(60) NOT NULL default '',   password varchar(32) NOT NULL default '',  email varchar(60) NOT NULL default '', joindate int(10) unsigned NOT NULL default '0',  PRIMARY KEY (name)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> insert into users(name,password,email,joindate) values( '1','2' , '3' , '12.10.2112');
Query OK, 1 row affected, 1 warning (0.05 sec)

mysql> insert into users2(name,password,email,joindate) values( '1','2' , '3' , '12.10.2112');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into users(name,password,email,joindate) values( '1','2' , '3' , '12.10.2112') ON DUPLICATE KEY UPDATE users2.name = 'test';
ERROR 1054 (42S22): Unknown column 'users2.name' in 'field list'
Вот запросы для тестирования.

Проверил на:
5.1.41-3ubuntu12.3
5.0.67-0ubuntu6.1
не работает.
geezer.code вне форума   Ответить с цитированием
Старый 08.07.2010, 12:53   #3
che
 
Аватар для che
 
Регистрация: 05.07.2010
Сообщений: 145
Репутация: 166
По умолчанию

сколько раз пробовал, ни разу не получалось ((
che вне форума   Ответить с цитированием
Старый 05.09.2010, 22:07   #4
AFoST
 
Аватар для AFoST
 
Регистрация: 01.08.2010
Сообщений: 79
Репутация: 43
По умолчанию

5.0.45-community-nt (в денвер3 по умолчанию) не работает
AFoST вне форума   Ответить с цитированием
Старый 05.09.2010, 22:11   #5
m0Hze
 
Аватар для m0Hze
 
Регистрация: 05.07.2010
Сообщений: 326
Репутация: 129
По умолчанию

Глянул документацию, так там вообще нет сообщений о том, что можно обновлять другие таблицы. В пределах ON.. UPDATE можно обновлять только таблицу, учавствующую в запросе.
Вот примеры http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
__________________
multi-vpn.biz - Первый VPN на Эллиптических кривых со скоростью света.
m0Hze вне форума   Ответить с цитированием
Старый 06.09.2010, 00:10   #6
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

Фейк имхо, мы с S00Py уже копали с полгода назад. Не работает на 5-ке точно (много версий перепробовали). На четверке не проверяли
Pashkela вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot