Kezdőoldal » Számítástechnika » Programozás » MYSQL-ben hogyan oldható meg,...

MYSQL-ben hogyan oldható meg, hogy létező rekordot csak módosítsunk?

Figyelt kérdés

Azt szeretném elérni, hogyha egy rekord létezik, akkor azt ne adja hozzá, csak egy adott mezőt módosítson. Azt olvastam, hogy mysql-ben ezt az ON DUPLICATE KEY UPDATE-tal valósítjuk meg.

A probléma ezzel az, hogy sajnos nekem ugyanúgy megtörténik az insert.

Példa: insert into TABLA (rekord_id, rekord_neve, mod_datum) VALUES ('...','...','...')

ON DUPLICATE KEY UPDATE mod_datum=VALUES(mod_datum);

Azt szeretném kérdezni, hogy mit rontottam el és hogyan tudnám ezt javítani?


2019. dec. 29. 12:01
 1/3 anonim ***** válasza:
0%

Triggerrel oldható meg:

DELIMITER $$

CREATE TRIGGER Before_Insert_Tabla

BEFORE INSERT ON Tabla

FOR EACH ROW

BEGIN

IF (NOT EXISTS(SELECT * FROM Tabla WHERE rekord_id = NEW.rekord_id)) THEN

INSERT INTO User (rekord_id, rekord_neve, mod_datum)

VALUES (NEW.rekord_id, NEW.rekord_neve, NEW.mod_datum);

ELSE

UPDATE Tabla SET mod_datum=NEW.mod_datum WHERE record_id=NEW.record_id;

END IF;

END$$

DELIMITER ;

2019. dec. 29. 12:12
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
100%
"Azt szeretném elérni, hogyha egy rekord létezik" Ennél picit specifikusabbnak kell lenni. Az adatbázis szerver nem tudja mi az, hogy "egy rekord létezik". Amit tud az az, hogy egy elsődleges, vagy egyedi kulcs már létezik a táblában. Fel van véve a táblára elsődleges kulcs? Arra is figyelj oda, hogy az INSERT ... ON DUPLICATE KEY UPDATE csak az ELSŐ egyező kulcsra fogja elvégezni a frissítést, tehát ha több egyedi/elsődleges kulcs van a tábládon, akkor azt a rekordot fogja frissíteni, amelyikben először talál egyezést bármelyik kulccsal, még ha esetleg lenne egy másik is, ami egy másik kulccsal produkál egyezést.
2019. dec. 29. 14:04
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

#1, #2 köszönöm szépen a segítséget!

Az elsődleges kulcsot sajnos tényleg elfelejtettem, mikor átterveztem a táblát, ez okozta a problémát.

2020. jan. 3. 21:58

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!