Insert/Update - MySQL

7 отговора 301 прегледа
#1

Insert/Update - MySQL

Имам една таблица.
Field Type Null Key Default Extra
id_labels int(3) unsigned PRI auto_increment
named varchar(128) YES
year int(12) unsigned YES
week int(12) unsigned YES
start int(12) unsigned YES
changed timestamp(14) YES
Това което правя сега е следното:
Ако имам ред с named = 'Кретен' - Update реда където named = Кретен
Ако нямам такъв ред - Insert

Предполагам че няма SQL заявка която или да променя или да инсъртва, вероятно единствения начин е да се ползват stored procedures?
Или бъркам?

Bеer? Moooorrre?
Отговор
в отговор на bira_more #2

Re: Insert/Update - MySQL

има replace
дето е delete/insert , работи по PK-то

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на ro6avia #3

Мерси

забравих за replace.
И тъй като или променям всичко или инсъртвам - ще ми свърши чудничка работа.

Bеer? Moooorrre?
Отговор
в отговор на bira_more #4

Re: Освен REPLACE

в 4.1 има и

INSERT .... ON DUPLICATE KEY UPDATE SET ...;

Ама си прав, че в твоя случай REPLACE ти върши идеална работа.

Как е бирата? Аз нещо съм я позарязал тези дни.

salle.online.bg/sig
Отговор
в отговор на salle #5

Ми добре си е бирата :)

И добре че я има.
Имах си една концепция за уникални ИД на серия продукти.
Тръгнахме да правим нови продукти и аз тъпанара вместо да ползвам тествана концепция се направих на умен.
Е вчера успях да се върна в релсите.

Ама нали ти казвам - добре че е бирата че както ми беше пламнала главата .....

Bеer? Moooorrre?
Отговор
в отговор на bira_more #6

Re: Пак 4.1 ...

mysql> select UUID();
+--------------------------------------+
| UUID() |
+--------------------------------------+
| 2bf635da-0051-1027-ba90-0007e9aa92c3 |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> select VERSION();
+-----------------------+
| VERSION() |
+-----------------------+
| 4.1.2-alpha-debug-log |
+-----------------------+
1 row in set (0.00 sec)

mysql> select BEER();
ERROR 1064 (42000): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '()'

Последното за съжаление още не работи ...

salle.online.bg/sig
Отговор
в отговор на salle #7

А отговорът би трябвало да бъде

Бирата е в магазина.

АМа това ще е функция за версия 6.6

Bеer? Moooorrre?
Отговор
в отговор на bira_more #8

Re: А отговорът би трябвало да бъде

А защо да не е

mysql> select BEER();
+-----------------------+
| BEER() |
+-----------------------+
| Moooorrre |
+-----------------------+
1 row in set (0.00 sec)


root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор