REPLACE INTO
In this page:
REPLACE INTO table_name (column1, column2)
VALUES (value1, value2);
REPLACE INTO का Introduction
REPLACE INTO INSERT जैसा काम करता है, लेकिन duplicates handle करने के लिए एक twist के साथ। अगर same primary key या unique index वाली एक row पहले से exist करती है, MySQL पहले पुराने row को delete करता है और नया insert करता है। अगर row exist नहीं करती, यह इसे बस एक normal INSERT जैसा insert कर देता है।
उदाहरण: Introduction to REPLACE INTO
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users VALUES (1, 'Amit');
REPLACE INTO users VALUES (1, 'Amit Kumar');
Set Syntax के साथ REPLACE INTO
आप column-list form के बजाय REPLACE statement के साथ SET syntax भी इस्तेमाल कर सकते हैं। यह highly readable है और UPDATE syntax जैसा ही काम करता है। यह एक नज़र में clear कर देता है कि कौन से columns को नई values मिल रही हैं।
उदाहरण: REPLACE INTO with Set Syntax
REPLACE INTO users SET id = 1, name = 'Amit Kumar';
Select Queries के साथ REPLACE INTO
आप REPLACE INTO को एक SELECT query के साथ इस्तेमाल करके data को एक table से दूसरे में copy कर सकते हैं, एक staging table को एक live में sync करने के लिए उपयोगी। अगर destination table में duplicate keys मिलें, वे error होने के बजाय automatically नई rows से update हो जाएँगी।
उदाहरण: REPLACE INTO with Select Queries
REPLACE INTO live_users SELECT * FROM staging_users;
Behind-the-Scenes Delete
जब REPLACE एक duplicate ढूँढता है, यह behind the scenes पुराना row delete करता है और एक नया insert करता है। इसका मतलब है कि कोई auto-increment primary key बदल सकती है अगर explicitly न दी गई हो।
यह table पर किसी भी DELETE और INSERT triggers को भी trigger करता है, जो आपको surprise कर सकता है अगर आप सिर्फ एक update की उम्मीद कर रहे थे।
उदाहरण: The Behind-the-Scenes Delete
-- REPLACE deletes the old row and inserts a new one; a fresh AUTO_INCREMENT value may be assigned
REPLACE INTO users (id, name) VALUES (1, 'Amit Kumar');
REPLACE बनाम INSERT ... ON DUPLICATE KEY UPDATE
REPLACE पुराना row delete करता है और एक नया insert करता है, हर column को आपकी दी गई values पर reset करते हुए। INSERT ... ON DUPLICATE KEY UPDATE मौजूदा row को delete करने के बजाय सिर्फ specified columns update करता है।
REPLACE तब इस्तेमाल करें जब आप सभी columns को आसानी से overwrite करना चाहें, और untouched columns preserve करना चाहें तो UPDATE form इस्तेमाल करें।
उदाहरण: REPLACE vs INSERT ... ON DUPLICATE KEY UPDATE
REPLACE INTO users (id, name, email) VALUES (1, 'Amit', '[email protected]'); -- resets every column
INSERT INTO users (id, name, email) VALUES (1, 'Amit', '[email protected]')
ON DUPLICATE KEY UPDATE name = 'Amit'; -- updates only name
- कुछ columns update करना चाहते समय
REPLACE INTOइस्तेमाल करना, क्योंकि यह पुराना row delete करके एक नया insert करता है, ताकि unspecified columns वापस defaults पर चले जाएँ। - बिना
PRIMARY KEYयाUNIQUEindex के इसके काम करने की उम्मीद करना, ताकि यह बस नई rows insert करे। - यह surprise होना कि
AUTO_INCREMENTvalues और foreign-key cascades affect होते हैं क्योंकि row असल में पहले delete होता है।
UPDATEमौजूदा rows बदलता है, और यह एक साथ कई columns set कर सकता है।DELETEकिसी table से rows हटाता है, और एकWHEREclause control करता है कि कौन सी।REPLACE INTOएक row insert करता है या same key वाली एक मौजूदा को replace करता है।
Chapter Quiz — Complete all 4 topics to unlock
0/4 topics done
Complete these topics first: