MYSQL-ben hogyan oldható meg, hogy létező rekordot csak módosítsunk?
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?
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 ;
#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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!