|
|
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
пишу скрипт online на сайте в связи с чем появился вопрос, возможно ли указать mySQL что надо делать INSERT если нет записи и UPDATE если есть. что то типа такого: Код: plaintext 1. 2. таблица такая: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 13:13:27 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
tru55оно? http://www.sql.ru/forum/actualtopics.aspx?search=merge&bid=6 Дао, выраженное словами, не есть истинное дао. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 14:28:53 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
yarnikпишу скрипт online на сайте в связи с чем появился вопрос, возможно ли указать mySQL что надо делать INSERT если нет записи и UPDATE если есть. что то типа такого: Код: plaintext 1. 2. таблица такая: Код: plaintext 1. 2. 3. Во-первых, храните ip в INT, и сохраняйте/выводите с использованием INET_ATON()/INET_NTOA(), соответственно. Во-вторых, задайте первичный, в крайнем случае, уникальный ключ по ip. В-третьих, воспользуйтесь синтаксисом INSERT ... ON DUPLICATE KEY UPDATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 14:32:29 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
DocAlВ-третьих, воспользуйтесь синтаксисом INSERT ... ON DUPLICATE KEY UPDATE. replace помоему все же удобнее http://phpclub.ru/mysql/doc/replace.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 14:41:44 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
Esu DocAlВ-третьих, воспользуйтесь синтаксисом INSERT ... ON DUPLICATE KEY UPDATE.replace помоему все же удобнее http://phpclub.ru/mysql/doc/replace.htmlАвтор просил вставку либо апдейт, я дал ему вставку либо апдейт. Откуда я знаю, может, он на апдейт триггер вешать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 14:43:34 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
чисто теоритически, что лучше? тесты показывают одинаково.. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 01:20:10 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
yarnikчисто теоритически, что лучше? тесты показывают одинаково.. Код: plaintext 1. 2. 3. 4. естессно одинаково, т.к. вы тестируете не запрос, а строку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 02:52:14 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
точно... а как же быть? как выяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 12:45:18 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
yarnikточно... а как же быть? как выяснить? может через хранимку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 21:32:13 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. разумеется ip должен быть уникальными ключем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2009, 12:50:51 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
REPLACE вначале сделает DELETE, а затем INSERT согласитесь, это не похоже на UPDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 13:24:22 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
t, ты шесть лет ждал, чтобы написать свой ответ ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 13:47:31 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
tREPLACE вначале сделает DELETE, а затем INSERT согласитесь, это не похоже на UPDATE На самом деле UPDATE (иногда) тоже сначала делает DELETE, а потом INSERT, и для того, чтобы до этого додуматься не нужно было ждать шесть лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 13:49:53 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Вы правы, есть такая песня, /storage/innobase/row/row0mysql.cc: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 07:53:16 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
> На самом деле UPDATE (иногда) тоже сначала делает DELETE, а потом INSERT, и для того, чтобы до этого додуматься не нужно было ждать шесть лет. извиняюсь, а в каких случаях так происходит? честно первый раз слышу про такое И что триггер на DELETE срабатывает при этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 08:00:09 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
[NT Man]> На самом деле UPDATE (иногда) тоже сначала делает DELETE, а потом INSERT, и для того, чтобы до этого додуматься не нужно было ждать шесть лет. извиняюсь, а в каких случаях так происходит? честно первый раз слышу про такое update логически замена значение внутри записи физически это может быть либо такая замена либо другой вариант это замена одной записи на другую чем же естественно с тем же значением первичного ключа первичного ключа это как делается абсолютно во всех базах данных даже скорее сложно найти субд которая так не делает. И что триггер на DELETE срабатывает при этом?[/quot] нет конечно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:18:10 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Пару слов о том когда такое происходит происходит это обычно тогда когда по сооброжениям производительности легче удалить физически записи в старом месте и в ставить в новом. Например такое может случаться когда новая версия записи физически не влазит места где расположена старая записьтак же такое случается когда меняется значение первичного ключа таблицы Это только наиболее распространенные случаикаждый базе данных есть свои особенности которые диктуют условия для того чтобы использовался этот механизм изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:41:25 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
MasterZivMasterZiv, Пару слов о том когда такое происходит происходит это обычно тогда когда по сооброжениям производительности легче удалить физически записи в старом месте и в ставить в новом. Например такое может случаться когда новая версия записи физически не влазит места где расположена старая записьтак же такое случается когда меняется значение первичного ключа таблицы Это только наиболее распространенные случаикаждый базе данных есть свои особенности которые диктуют условия для того чтобы использовался этот механизм изменения. Понял это скрыто от пользователя. А то я испугался, думаю это при каких случаях вместо обновления одного поля удаляется вся запись запись с потерей хранящихся данных. подумал что это 1 апрельский розыгрыш такой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 11:00:59 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
Arhat109, круто, первый раз вижу человека, который так конкретно заглянул в исходники... :-) ... хотя сам и компилил - не открывал ни одного "сырца" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 14:49:53 |
|
||
|
UPDATE or INSERT
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, Да я тоже не особо "открывал". Сначала мне прислали по аське, а потом тупо грепнул по слову "update(" и убедился что это "оно". :) Как понимаю, этот механизм используется в случаях когда "длина строки записи - ненормирована". То есть апдейт поля варчар запросто способен удлинить запись. У мускуля при создании таблички не здря же есть вариант "fixed". :) Ну и тут уже выше сказали тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 07:24:50 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=35120097&tid=1833360]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 345ms |

| 0 / 0 |
