Нужно было сделать UPDATE сразу нескольких таблиц, и пока писала код проверить работает ли синтаксис, нечайно рановато нажала отослать, и удивилась, что код сработал
| Код | UPDATE user_profile,user_interest SET user_profile.interests_access=2,user_interest.interest_access=2 WHERE user_profile.uid=97 |
Совершенно не понятно как, но были изменены 2 строчки, по одной в каждой из таблиц. Меня это сильно удивило, я ведь не прописала точку их соприкосновения, то есть, что-то вроде так
| Код | UPDATE user_profile,user_interest SET user_profile.interests_access=4,user_interest.interest_access=4 WHERE user_profile.uid=97 AND user_interest.uid=user_profile.uid |
Работают оба варианта, так же работает вариант номер 3
| Код | UPDATE user_profile,user_interest SET user_profile.interests_access=3,user_interest.interest_access=3 WHERE user_profile.uid=97 AND user_interest.uid=97 |
Теперь вопрос: А как вообще правильно? Чтоб и синтаксис не нарушать и быстро работало.
Таблицы простые:
| Код | CREATE TABLE IF NOT EXISTS `user_profile` ( `uid` int(10) unsigned NOT NULL, `interests_ids` varchar(2047) COLLATE utf8_unicode_ci DEFAULT NULL, `interests_access` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `user_interest` ( `uid` int(10) unsigned NOT NULL, `interest_id` bigint(20) unsigned NOT NULL, `interest_access` tinyint(3) unsigned NOT NULL, KEY `uid` (`uid`), KEY `interest_id` (`interest_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
|