>есть такая штука IF (в mysql точно есть), вроде поддерживается в SQL
>92 не-е, это не то.
IF EXISTS DROP .... и так далее это не то.
Я нашел ужел сам - REPLACE.
Но только, в не понял по докам - не уж-то он если нашел такую же запись будет
ее удалять и заново вставлять? Бред какой-то получается.
И еще:
Вот такая таблица:
CREATE TABLE `drv_browsers` (
`browser_id` int(11) NOT NULL auto_increment,
`name` varchar(64) NOT NULL default '',
PRIMARY KEY (`browser_id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Это для ведения статистических логов о авторизациях и на каких браузерах юзеры
входили в веб-систему...
Соответственно, если движок встречает незнакомый браузер ($_SERVER['HTTP_USER_AGENT']),
то втыкает в эту таблицу на лету.
Запрос - "REPLACE `drv_browsers` (`name`) VALUES('bla-bla')"
Я тестил в phpMyAdmin 2.6.4-pl4, MySQL 5.0.17. Так вот:
После исполнения запроса с этим реплейсом он пишет там у себя таку инфу:
Inserted rows: 2
Inserted row id: 33 (Query took 0.0004 sec)
Вопрос:
1. Почему Inserted rows: 2, а не 1 и вообще не 0, т.к. в принципе уже и не надо
было к этому времени ни чего вставлять - такая запись уже была в таблице.
2. Почему row id увеличивается при каждом новом исполнении запроса,
когда запись со значениями указанными в REPLACE в конечном счете
имеет все то же значение автоинкрементного поля? (скажем 28, а не 33,34, и т.д.)
P.S. На эти мелочи практически плевать, но просто интересно.
Если кто знает напишите пожалуйста.
P.S. Надеюсь тут после Нового Года `живые' еще есть? ;)