- 1 1. හැඳින්වීම
- 2 2. ON DUPLICATE KEY UPDATE යනු කුමක්ද?
- 3 3. මූලික භාවිතා උදාහරණ
- 4 4. උසස් භාවිතය
- 5 5. දෝෂ සහ හොඳ පුරුදු
- 6 6. අනෙකුත් දත්ත ගබඩා වල සමාන විශේෂාංග
- 7 7. Conclusion
- 8 8. නිතර අසන ප්රශ්න
- 8.1 Q1: MySQL හි කුමන අනුවාදයන් ON DUPLICATE KEY UPDATE සහය දක්වයි?
- 8.2 Q2: ප්රාථමික යතුරක් නොමැතිව ON DUPLICATE KEY UPDATE ක්රියා කරන්නේද?
- 8.3 Q3: ON DUPLICATE KEY UPDATE සහ REPLACE අතර වෙනස කුමක්ද?
- 8.4 Q4: ON DUPLICATE KEY UPDATE භාවිතා කරන විට කාර්යක්ෂමතාවය කෙසේ සුදානම් කරගත හැකිද?
- 8.5 Q5: අනුපිටපත් හඳුනාගැනීමේ කොන්දේසිය වෙනස් කළ හැදියිද?
- 8.6 Q6: “Duplicate entry” දෝෂය කුමන හේතුවෙන් සිදුවේ, එය කෙසේ සකස් කළ හැකිද?
- 8.7 Q7: ට්රිගර්ස් ON DUPLICATE KEY UPDATE මත බලපානවාද?
- 8.8 Q8: වෙනත් දත්ත ගබඩා වලදී ඒම ප්රශ්නය භාවිතා කළ හැදියිද?
- 8.9 සාරාංශය
1. හැඳින්වීම
When working with databases, one common challenge is handling duplicate data. For example, in a system that manages customer information, when registering a new customer, you must check whether the data already exists and update it if necessary. Managing this process manually can lead to errors and processing delays.
දත්ත ගබඩා සමඟ වැඩ කරන විට, පොදු අභියෝගයක් වන්නේ පිටපත් දත්ත හසුරවීමයි. උදාහරණයක් ලෙස, ගනුදෙනුකරුවන්ගේ තොරතුරු කළමනාකරණය කරන පද්ධතියක, නව ගනුදෙනුකරු ලියාපදිංචි කරන විට, දත්තය දැනට පවතිනවාදැයි පරීක්ෂා කර, අවශ්ය නම් එය යාවත්කාලීන කළ යුතුය. මෙම ක්රියාවලිය අතින් කළහොත් දෝෂ සහ සැකසීමේ ප්රමාද ඇති විය හැක.
This is where MySQL’s ON DUPLICATE KEY UPDATE syntax becomes useful. By using this feature, you can automatically perform the appropriate action when duplicate data is detected. As a result, data management becomes more efficient and the workload on developers is reduced.
මෙම අවස්ථාවේ MySQL හි ON DUPLICATE KEY UPDATE වාක්ය රීතිය ප්රයෝජනවත් වේ. මෙම විශේෂාංගය භාවිතා කිරීමෙන්, පිටපත් දත්ත හඳුනාගත් විට ස්වයංක්රීයව සුදුසු ක්රියාව සිදු කළ හැක. එමඟින්, දත්ත කළමනාකරණය වැඩි කාර්යක්ෂම වේ සහ සංවර්ධකයන්ගේ වැඩ බර අඩු වේ.
In this article, we will explain the basic syntax and usage examples of ON DUPLICATE KEY UPDATE, advanced techniques, and important points to keep in mind. By the end, developers from beginner to intermediate levels will be able to effectively use this feature in real‑world projects.
මෙම ලිපියේ, අපි ON DUPLICATE KEY UPDATE හි මූලික වාක්ය රීතිය සහ භාවිතා උදාහරණ, උසස් තාක්ෂණ, සහ සැලකිල්ලට ගත යුතු වැදගත් කරුණු පැහැදිලි කරමු. අවසානයේ, ආරම්භක සිට මධ්යම මට්ටමේ සංවර්ධකයන්ට මෙම විශේෂාංගය වාස්තුකලාවෙන් භාවිතා කිරීමට හැකි වනු ඇත.
2. ON DUPLICATE KEY UPDATE යනු කුමක්ද?
In MySQL, ON DUPLICATE KEY UPDATE is a convenient clause that automatically updates existing data when an INSERT statement violates a primary key or unique key constraint. This allows you to handle both data insertion and updates efficiently within a single query.
MySQL හි, ON DUPLICATE KEY UPDATE යනු INSERT ප්රකාශයක් ප්රාථමික යතුරක් හෝ අද්විතීය යතුරක් උල්ලංඝනය කරන විට, පවතින දත්ත ස්වයංක්රීයව යාවත්කාලීන කරන සුළු කොටසකි. මෙය එක් විමසුමක් තුළ දත්ත ඇතුළත් කිරීම සහ යාවත්කාලීන කිරීම දෙකම කාර්යක්ෂමව හසුරවීමට ඉඩ සලසයි.
මූලික සංකල්පය
Normally, when inserting data with an INSERT statement, a duplicate primary key or unique key results in an error. However, by using ON DUPLICATE KEY UPDATE, you can perform the following actions:
සාමාන්යයෙන්, INSERT ප්රකාශයක් භාවිතා කර දත්ත ඇතුළත් කරන විට, පිටපත් ප්රාථමික යතුරක් හෝ අද්විතීය යතුරක් දෝෂයක් ඇති කරයි. එ obstante, ON DUPLICATE KEY UPDATE භාවිතා කිරීමෙන්, ඔබට පහත ක්රියාමාර්ග සිදු කළ හැක:
- If the data being inserted is new, the INSERT operation executes normally.
ඇතුළත් කරන දත්ත නව නම්, INSERT ක්රියාව සාමාන්ය ලෙස ක්රියාත්මක වේ.
If the data being inserted conflicts with existing data, the specified columns are updated.
- ඇතුළත් කරන දත්ත පවතින දත්ත සමඟ ගැටළුවක් ඇති නම්, නියමිත තීරුවල යාවත්කාලීන වේ.
This enables efficient data manipulation while avoiding errors.
මෙය දෝෂ වලක්වා දත්ත කාර්යක්ෂමව සැකසීමට ඉඩ සලසයි.
මූලික වාක්ය රීතිය
The basic syntax of ON DUPLICATE KEY UPDATE is as follows:
ON DUPLICATE KEY UPDATE හි මූලික වාක්ය රීතිය පහත පරිදි වේ:
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2;
table_name: The target table name.table_name: ඉලක්ක වගුවේ නාමය.column1, column2, column3: The column names for insertion.column1, column2, column3: ඇතුළත් කිරීම සඳහා තීරු නාමයන්.value1, value2, value3: The values to insert.value1, value2, value3: ඇතුළත් කිරීමට අගයන්.ON DUPLICATE KEY UPDATE: Specifies the update action when a duplicate key is detected.ON DUPLICATE KEY UPDATE: පිටපත් යතුරක් හඳුනාගත් විට යාවත්කාලීන ක්රියාව නියම කරයි.
අවශ්යතා
For this clause to work, the table must have at least one of the following constraints:
මෙම කොටස ක්රියාත්මක වීමට, වගුවට පහත සීමාවන්ගෙන් එකක් හෝ වැඩි වශයෙන් තිබිය යුතුය:
- PRIMARY KEY : A column that holds unique values.
PRIMARY KEY : අද්විතීය අගයන් රඳවා තබන තීරුව.
UNIQUE KEY : A column that does not allow duplicate values.
- UNIQUE KEY : පිටපත් අගයන් ඉඩ නොදෙන තීරුව.
If none of these constraints exist, ON DUPLICATE KEY UPDATE will not function.
මෙම සීමාවන් කිසිවක් නොමැති නම්, ON DUPLICATE KEY UPDATE ක්රියා නොකරයි.
උදාහරණය
As a simple example, consider inserting or updating data in a table that manages user information.
සරල උදාහරණයක් ලෙස, පරිශීලක තොරතුරු කළමනාකරණය කරන වගුවක දත්ත ඇතුළත් කිරීම හෝ යාවත්කාලීන කිරීම ගැන සිතන්න.
වගුවේ විවරණය
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100) UNIQUE
);
INSERT භාවිතය
The following query handles cases where the user ID or email address already exists:
පහත විමසුම පරිශීලක ID හෝ විද්යුත් තැපැල් ලිපිනය දැනට පවතින අවස්ථා හසුරවයි:
INSERT INTO users (id, name, email)
VALUES (1, 'Taro', 'taro@example.com')
ON DUPLICATE KEY UPDATE name = 'Taro', email = 'taro@example.com';
- If a user with ID 1 already exists, the
nameandemailvalues are updated. ID 1 සමඟ පරිශීලකයෙක් දැනට පවතිනවා නම්,
nameසහemailඅගයන් යාවත්කාලීන වේ.If not, a new record is inserted.
- එසේ නොමැති නම්, නව රෙකෝඩ් එකක් ඇතුළත් වේ.
3. මූලික භාවිතා උදාහරණ
In this section, we introduce basic usage examples of ON DUPLICATE KEY UPDATE. We will explain both single‑record and multiple‑record operations.
මෙම කොටසේ, අපි ON DUPLICATE KEY UPDATE හි මූලික භාවිතා උදාහරණ හඳුන්වා දෙමු. එකලස් රෙකෝඩ් සහ බහු රෙකෝඩ් මෙහෙයුම් දෙකම පැහැදිලි කරමු.
එකලස් රෙකෝඩ් හසුරවීම
Let’s look at an example where a single record is inserted and updated if duplicate data exists.
පිටපත් දත්ත පවතින විට එකලස් රෙකෝඩ් එකක් ඇතුළත් කර යාවත්කාලීන කරන උදාහරණයක් බලමු.
වගුවේ විවරණය
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(50),
stock INT
);
මූලික INSERT ප්රකාශය
The following query inserts product data with ID 1. If it already exists, the stock value is updated.
පහත විමසුම ID 1 සමඟ නිෂ්පාදන දත්ත ඇතුළත් කරයි. එය දැනට පවතිනවා නම්, stock අගය යාවත්කාලීන වේ.
INSERT INTO products (id, name, stock)
VALUES (1, 'Product A', 100)
ON DUPLICATE KEY UPDATE stock = 100;
එය කෙසේ ක්රියා කරයි
- If product ID 1 does not exist, a new record is inserted.
නිෂ්පාදන ID 1 නොමැති නම්, නව රෙකෝඩ් එකක් ඇතුළත් වේ.
If product ID 1 already exists, the
stockcolumn is updated to100.- නිෂ්පාදන ID 1 දැනට පවතිනවා නම්,
stockතීරුව100වෙත යාවත්කාලීන වේ.
බහු රෙකෝඩ් සකස් කිරීම
ඊළඟට, බහු රෙකෝඩ් එකක් සමූහවලින් සැකසීමට කෙසේදැයි බලමු.
බහු අගයන්ගේ Bulk Insert
පහත විමසුම එකවර බහු නිෂ්පාදන රෙකෝඩ් ඇතුළත් කරයි:
INSERT INTO products (id, name, stock)
VALUES
(1, 'Product A', 100),
(2, 'Product B', 200),
(3, 'Product C', 300)
ON DUPLICATE KEY UPDATE stock = VALUES(stock);
එය කෙසේ ක්රියා කරයි
VALUES(stock)යනු එක් එක් රෙකෝඩ් සඳහා ඇතුළත් කරන අගයන් (100,200,300) වේ.- නිෂ්පාදන ID එකක් දැනටමත් පවතිනවා නම්, එහි stock එක ඇතුළත් කළ අගය අනුව යාවත්කාලීන වේ.
- එය නොපවතින්නේ නම්, නව රෙකෝඩ් එකක් ඇතුළත් කරයි.
උසස්: ඩයිනමික් අගයන් යාවත්කාලීන කිරීම
ඔබට දැනට ඇති දත්ත මත පදනම්ව අගයන් ඩයිනමික් ලෙස යාවත්කාලීන කළ හැකිය. උදාහරණයක් ලෙස, පවතින stock එකට එකතු කිරීම:
INSERT INTO products (id, name, stock)
VALUES (1, 'Product A', 50)
ON DUPLICATE KEY UPDATE stock = stock + VALUES(stock);
එය කෙසේ ක්රියා කරයි
- නිෂ්පාදන ID 1 දැනටමත් පවතිනවා නම්,
50එක පවතිනstockඅගයට එකතු කරයි. - එය නොපවතින්නේ නම්,
stockඅගය50ලෙස සකසා නව රෙකෝඩ් එකක් ඇතුළත් කරයි.
සාරාංශය
- ඔබට එක් රෙකෝඩ් පමණක් නොව, බහු රෙකෝඩ් එකක් එකවර කාර්යක්ෂමව සැකසිය හැකිය.
VALUES()භාවිතයෙන්, ඇතුළත් කරන දත්ත මත පදනම්ව තීරුවල යාවත්කාලීන කිරීමේ ලවච්චිතතාවය ලබා ගත හැකිය.
4. උසස් භාවිතය
ON DUPLICATE KEY UPDATE භාවිතයෙන්, ඔබට මූලික insert/update ක්රියාකාරකම් ඉක්මවා, වඩාත් ලවච්චිත දත්ත සැකසුම් ක්රියාත්මක කළ හැකිය. මෙම කොටසේ, කොන්දේසිමය යාවත්කාලීන කිරීම් සහ මෙම විශේෂාංගය ගනුදෙනු (transactions) සමඟ එකතු කිරීම වැනි උසස් භාවිත රටාවන් පැහැදිලි කරමු.
කොන්දේසිමය යාවත්කාලීන කිරීම්
ON DUPLICATE KEY UPDATE සමඟ, CASE ප්රකාශන හෝ IF ක්රියාකාරකම් භාවිතා කර තීරුවල කොන්දේසිමය යාවත්කාලීන කිරීම් කළ හැකිය. මෙය තත්ත්වය අනුව වඩාත් ලවච්චිත යාවත්කාලීන තර්කයක් සපයයි.
උදාහරණය: Stock එකක් පමණක් ත්රෙෂ්හෝල්ඩ් එකකට පහළ වීමේදී යාවත්කාලීන කිරීම
පහත උදාහරණය, වත්මන් stock එකක් නියමිත සංඛ්යාවකට පහළ වීමේදී පමණක් stock අගය යාවත්කාලීන කරයි.
INSERT INTO products (id, name, stock)
VALUES (1, 'Product A', 100)
ON DUPLICATE KEY UPDATE stock = CASE
WHEN stock < 50 THEN VALUES(stock)
ELSE stock
END;
එය කෙසේ ක්රියා කරයි
- නිෂ්පාදන ID 1 පවතින අතර, වත්මන් stock එක 50 ට වඩා අඩු නම්, එය නව අගයට (
100) යාවත්කාලීන වේ. - stock එක 50 හෝ ඊට වැඩි නම්, යාවත්කාලීන නොවී, පවතින අගය රැකගනී.
ඩයිනමික් යාවත්කාලීන කිරීම් භාවිතය
ඔබට ඩයිනමික් ගණනය කිරීම් සිදු කර, ඇතුළත් කරන දත්ත මත පදනම්ව අගයන් යාවත්කාලීන කළ හැකිය.
උදාහරණය: සමුච්චිත අගයන් යාවත්කාලීන කිරීම
පහත උදාහරණය, ඇතුළත් කරන stock අගය පවතින stock එකට එකතු කරයි.
INSERT INTO products (id, name, stock)
VALUES (2, 'Product B', 50)
ON DUPLICATE KEY UPDATE stock = stock + VALUES(stock);
එය කෙසේ ක්රියා කරයි
- නිෂ්පාදන ID 2 දැනටමත් පවතිනවා නම්,
50පවතිනstockඅගයට එකතු කරයි. - එය නොපවතින්නේ නම්, නව රෙකෝඩ් එකක් ඇතුළත් කරයි.
ගනුදෙනු (Transactions) සමඟ එකතු කිරීම
බහු INSERT ප්රකාශන (හා අනෙකුත් දත්ත මෙහෙයුම්) ගනුදෙනුවක් තුළ ක්රියාත්මක කිරීමෙන්, දත්ත සමගත්වය රැකගෙන සංකීර්ණ මෙහෙයුම් සිදු කළ හැකිය.
උදාහරණය: ගනුදෙනුවක් සමඟ බැච් සැකසීම
පහත උදාහරණය, බහු රෙකෝඩ් එකක් බැච් එකක් ලෙස සැකසී, දෝෂයක් සිදු වූ විට පසුපසට ආපසු හැරේ.
START TRANSACTION;
INSERT INTO products (id, name, stock)
VALUES
(1, 'Product A', 100),
(2, 'Product B', 200)
ON DUPLICATE KEY UPDATE stock = VALUES(stock);
INSERT INTO products (id, name, stock)
VALUES
(3, 'Product C', 300)
ON DUPLICATE KEY UPDATE stock = stock + VALUES(stock);
COMMIT;
එය කෙසේ ක්රියා කරයි
START TRANSACTIONසහCOMMITඅතර බහු විමසුම් ක්රියාත්මක වේ.- ඕනෑම විමසුමක් අසාර්ථක වූ විට, ගනුදෙනුව ආපසු හැරෙයි, දත්ත ගබඩාවට කිසිදු වෙනසක් නොයෙදේ.
උසස් භාවිතය සඳහා ප්රායෝගික අවස්ථා
අවස්ථාව 1: ඉ-කොමර්ස් වෙබ් අඩවියක ඉන්වෙන්ටරි කළමනාකරණය
නිෂ්පාදනයක් මිලදී ගත් විට, ඔබට එහි stock ගණන අඩු කිරීමට අවශ්ය විය හැකිය.
INSERT INTO products (id, name, stock)
VALUES (4, 'Product D', 100)
ON DUPLICATE KEY UPDATE stock = stock - 1;
දෘශ්යය 2: පරිශීලක ලකුණු පද්ධතිය
පවත්නා පරිශීලකයකුට ලකුණු එකතු කරන විට:
INSERT INTO users (id, name, points)
VALUES (1, 'Taro', 50)
ON DUPLICATE KEY UPDATE points = points + VALUES(points);
සාරාංශය
CASEප්රකාශන සහ ගතික යාවත්කාලීන භාවිතා කිරීමෙන්, ඔබට සංකීර්ණ කොන්දේසි තර්ක ක්රියාත්මක කළ හැක.- ගනුදෙනු එකතු කිරීමෙන්, ඔබට දත්ත සමගත්යතාව රැකගෙන ආරක්ෂිත මෙහෙයුම් සිදු කළ හැක.
- මෙම විශේෂාංගය ප්රායෝගික දෘශ්යයන්ට යොදා ගැනීමෙන්, දත්ත කළමනාකරණය වඩා කාර්යක්ෂම වේ.

5. දෝෂ සහ හොඳ පුරුදු
ON DUPLICATE KEY UPDATE භාවිතා කරන විට, වැරදි භාවිතය අනපේක්ෂිත හැසිරීමක් හෝ කාර්ය සාධන අඩු වීමක් ඇති කරයි. මෙම කොටස ප්රධාන දෝෂ සහ එය කාර්යක්ෂමව භාවිතා කිරීම සඳහා හොඳ පුරුදු පෙන්වයි.
ප්රධාන දෝෂ
1. AUTO_INCREMENT සමඟ අන්තර්ක්රියා
- ගැටළුව ප්රාථමික යතුර
AUTO_INCREMENTභාවිතා කරන විට, අනුපිළිවෙළ අගය නකල් එකක් සිදුවූවත් වැඩි විය හැක. මෙය MySQL INSERT කිරීමේදී නව ID එකක් වෙන් කර ගැනීම නිසා සිදුවේ. - විසඳුම INSERT එකක් ගැටුමක් ඇති වූ විට ID පිරිවැය වැළැක්වීමට, ඒකමය යතුරක් (AUTO_INCREMENT පමණක් නොව) භාවිතා කරන්න, අවශ්ය නම්
LAST_INSERT_ID()භාවිතා කර නවතම ID ලබා ගන්න.INSERT INTO products (id, name, stock) VALUES (NULL, 'Product E', 50) ON DUPLICATE KEY UPDATE stock = stock + VALUES(stock);
2. ඩෙඩ්ලොක් අවදානම
- ගැටළුව එකම වගුවේ එකවර බහු ත්රෙඩ්ස් ON DUPLICATE KEY UPDATE ක්රියාත්මක කරන විට, ඩෙඩ්ලොක්ස් සිදුවිය හැක.
- විසඳුම
- ප්රශ්නවල ක්රියාත්මක කිරීමේ අනුක්රමය සම්මත කරන්න.
- අවශ්ය විට වගු අගුළු භාවිතා කරන්න (කාර්ය සාධන බලපෑම ගැන සැලකිල්ලෙන්).
- ඩෙඩ්ලොක් සිදුවූ විට නැවත උත්සාහ කිරීමේ තර්ක ක්රියාත්මක කරන්න.
3. නිවැරදි දර්ශක සැලසුම
- ගැටළුව ප්රාථමික යතුරක් හෝ ඒකමය යතුරක් නොමැති නම්, ON DUPLICATE KEY UPDATE ක්රියා නොකරයි. තවත්, නරක දර්ශක කිරීම කාර්ය සාධනය බරපතල ලෙස අඩු කරයි.
- විසඳුම සෑම විටම ප්රාථමික යතුරක් හෝ ඒකමය යතුරක් නිර්වචනය කරන්න, සහ නිතර සෙවීම හෝ යාවත්කාලීන කරන තීරුවලට සුදුසු දර්ශක එකතු කරන්න.
හොඳ පුරුදු
1. දත්ත පෙර පරීක්ෂා කරන්න
SELECTප්රකාශනයක් INSERT කිරීමට පෙර භාවිතා කර, දත්ත පවතිනවාදැයි තහවුරු කර, අනිච්චිත යාවත්කාලීන වලින් වැළැක්වන්න.SELECT id FROM products WHERE id = 1;
2. ගනුදෙනු භාවිතා කරන්න
- බහු INSERT/UPDATE මෙහෙයුම් එකට ගොඩනැගීමට ගනුදෙනු භාවිතා කරන්න. මෙය ඔබට ආරක්ෂිතව සමගත්යතාව රැක ගැනීමට උපකාරී වේ.
START TRANSACTION; INSERT INTO products (id, name, stock) VALUES (1, 'Product A', 100) ON DUPLICATE KEY UPDATE stock = stock + 50; COMMIT;
3. යාවත්කාලීන කරන තීරු සංඛ්යාව අඩු කරන්න
- කාර්ය සාධනය වැඩිදියුණු කිරීම සහ අනිච්චිත වෙනස්කම් වැළැක්වීම සඳහා, ඔබ යාවත්කාලීන කරන තීරු සංඛ්යාව සීමා කරන්න.
INSERT INTO products (id, name, stock) VALUES (1, 'Product A', 100) ON DUPLICATE KEY UPDATE stock = VALUES(stock);
4. දෝෂ හසුරුවීම ක්රියාත්මක කරන්න
- ඩෙඩ්ලොක් හෝ අසාර්ථක INSERT සඳහා, දෝෂ හසුරුවීම ක්රියාත්මක කර, නැවත උත්සාහ කිරීම හෝ පසුපසට ආපසු හැරීමේ තර්ක ඇතුළත් කරන්න.
සාරාංශය
- දෝෂ : AUTO_INCREMENT වැඩිවීම, ඩෙඩ්ලොක්ස්, සහ නරක දර්ශක සැලසුම ගැන සැලකිල්ලෙන් සිටින්න.
- හොඳ පුරුදු : දත්ත ආරක්ෂිතව සහ කාර්යක්ෂමව සැකසීමට ගනුදෙනු සහ දෝෂ හසුරුවීම භාවිතා කරන්න.
6. අනෙකුත් දත්ත ගබඩා වල සමාන විශේෂාංග
MySQL හි ON DUPLICATE KEY UPDATE යනු දත්ත කාර්යක්ෂමව කළමනාකරණය කිරීමේ ශක්තිමත් විශේෂාංගයකි. එය MySQL සඳහාම සීමා කර ඇත. අනෙකුත් දත්ත ගබඩා පද්ධති සමාන ක්රියාකාරිත්වය ලබා දේ, ඒවායේ වෙනස් ලක්ෂණ සමඟ. මෙම කොටසේ, PostgreSQL සහ SQLite හි සමාන විශේෂාංග සසඳමු.
PostgreSQL: ON CONFLICT DO UPDATE
PostgreSQL හි, සමාන විශේෂාංගය ON CONFLICT DO UPDATE වේ. මෙම වාක්යය ගැටුමක් සිදුවූ විට කුමන ක්රියාවක් ගත යුතුද යන්න නියම කර, අනුපිළිවෙළ දත්ත හසුරවීමට ලවච්චි ක්රමයක් ලබා දෙයි.
මූලික ව්යවස්ථාව
INSERT INTO table_name (column1, column2)
VALUES (value1, value2)
ON CONFLICT (column1) DO UPDATE
SET column2 = value2;
ON CONFLICT (column1): සංඝර්ෂණ ඉලක්කය (ප්රාථමික යතුරක් හෝ අද්විතීය යතුරක් වැනි) නිරූපණය කරයි.DO UPDATE: සංඝර්ෂණයක් සිදුවන විට ක්රියාත්මක වන යාවත්කාලීන ක්රියාව නිර්වචනය කරයි.
Example
නිෂ්පාදන වගුවේ, නිෂ්පාදන ID එක දැනටමත් පවතිනවා නම් තොගය යාවත්කාලීන කරන්න:
INSERT INTO products (id, name, stock)
VALUES (1, 'Product A', 100)
ON CONFLICT (id) DO UPDATE
SET stock = EXCLUDED.stock;
EXCLUDED.stock: ඇතුළත් කිරීමට උත්සාහ කළ අගය වෙත යොමු වේ.
Key Characteristics
- MySQL වලින් වෙනස්කම PostgreSQL ඔබට සංඝර්ෂණ කොන්දේසිය පැහැදිලිව නියම කිරීමට ඉඩ දේ, බහු අද්විතීය සීමා ඇති වගු සමඟ වැඩ කිරීමේදී එය වඩාත් ස flexibil ය.
- ප්රතිලාභ එය උසස් කොන්දේසි තර්ක සහ යාවත්කාලීන වන තීරුවලට නිරූපිත පාලනය ලබා දේ.
SQLite: INSERT OR REPLACE / INSERT OR IGNORE
SQLite INSERT OR REPLACE සහ INSERT OR IGNORE ලබා දේ, එය MySQL සහ PostgreSQL ව්යවස්ථා වලින් සුළු ලෙස වෙනස් වේ.
INSERT OR REPLACE
INSERT OR REPLACE යනු අනුපිටපත් හඳුනාගත් විට පවතින පේළිය මකා නව පේළියක් ඇතුළත් කරයි.
Basic Syntax
INSERT OR REPLACE INTO table_name (column1, column2)
VALUES (value1, value2);
Example
නිෂ්පාදන ID එක දැනටමත් පවතිනවා නම්, පවතින රෙකෝඩ් එක මකා නව එකක් ඇතුළත් කරන්න:
INSERT OR REPLACE INTO products (id, name, stock)
VALUES (1, 'Product A', 100);
Key Characteristics
- ප්රවෘත්තික වෙනස්කම MySQL හෝ PostgreSQL වලට වඩා, SQLite නව එක ඇතුළත් කිරීමට පෙර පවතින රෙකෝඩ් එක ඉවත් කරයි.
- අවධානය පරණ රෙකෝඩ් එක මැකෙන නිසා, delete triggers ක්රියාත්මක විය හැක. Triggers නිර්වචනය කර ඇත්නම් සැලකිලිමත් වන්න.
INSERT OR IGNORE
INSERT OR IGNORE යනු අනුපිටපතක් පවතින විට ක්රියාව නිශ්ශබ්දව මඟ හැරේ, දෝෂයක් නොදැක්වී.
Comparison Table
| Database | Syntax | Characteristics |
|---|---|---|
| MySQL | ON DUPLICATE KEY UPDATE | Updates specific columns when duplicates occur. Simple and efficient. |
| PostgreSQL | ON CONFLICT DO UPDATE | Supports advanced conditional logic and high flexibility. |
| SQLite | INSERT OR REPLACE / IGNORE | REPLACE deletes then inserts. IGNORE skips errors. |
Summary
- MySQL හි ON DUPLICATE KEY UPDATE යනු ඇතුළත්-යාවත්කාලීන තර්කය හසුරවීමට සරල හා කාර්යක්ෂම වේ.
- PostgreSQL හි ON CONFLICT DO UPDATE වඩාත් ස flexibil සහ උසස් පාලනය ලබා දේ.
- SQLite හි INSERT OR REPLACE ඇතුළත් කිරීමට පෙර පවතින දත්ත මකා දමයි, එය delete ක්රියාත්මක වීමට හේතු විය හැක.
7. Conclusion
මෙම ලිපියේ, අපි MySQL හි ON DUPLICATE KEY UPDATE මූලික ව්යවස්ථාවෙන් උසස් භාවිතා අවස්ථා, වැදගත් සැලකිලි, සහ අනෙකුත් දත්ත ගබඩා පද්ධති සමඟ සසඳා බැලුවෙමු. මෙම විශේෂාංගය නිවැරදිව අවබෝධ කර භාවිතා කිරීමෙන්, ඔබට දත්ත ගබඩා මෙහෙයුම් වඩා කාර්යක්ෂම කර, යෙදුම් කාර්ය සාධනය සහ විශ්වාසනීයතාවය වැඩි කළ හැක.
ON DUPLICATE KEY UPDATE හි ප්රතිලාභ
කාර්යක්ෂම දත්ත කළමනාකරණය
* ඇතුළත් කිරීම සහ යාවත්කාලීන කිරීම එක් ප්රශ්නයකින් කළ හැකි අතර, සැකසීම කෙටි හා වේගවත් වේ.සරල අනුපිටපත් හසුරවීම
* ඔබට අනුපිටපත් දත්ත සඳහා හැසිරීම පැහැදිලිව නියම කර, දෝෂ අවදානම අඩු කළ හැක.ඉහළ ස flexibil
* උසස් අවස්ථා සඳහා ගතික යාවත්කාලීන සහ කොන්දේසි තර්ක සහය දේ.
ප්රයෝජනවත් භාවිතා අවස්ථා
- ඉන්වෙන්ටරි කළමනාකරණ පද්ධති
නිෂ්පාදන තොග මට්ටම් ගතිකව යාවත්කාලීන කරන්න.
පරිශීලක කළමනාකරණ පද්ධති
පරිශීලක තොරතුරු එක් කරන්න හෝ යාවත්කාලීන කරන්න.
පොයින්ට් කළමනාකරණ පද්ධති
- පරිශීලක ත්යාග පොයින්ට් එක් කරන්න හෝ යාවත්කාලීන කරන්න.
මෙම අවස්ථා වල, ON DUPLICATE KEY UPDATE භාවිතා කිරීම කේත සංකීර්ණතාවය අඩු කර, නඩත්තු හැකියාව වැඩි කරයි.
වැදගත් සැලකිලි සමාලෝචනය
AUTO_INCREMENT සැලකිලි
* ප්රාථමික යතුරAUTO_INCREMENTභාවිතා කරනවා නම්, අනුපිටපත් සිදුවූ විටද ID ගණන වැඩි විය හැකි බව සලකන්න.ඩෙඩ්ලොක් වලින් වැළැක්වීම
* ප්රශ්න ක්රියාත්මක කිරීමේ අනුපිළිවෙල සහ ගනුදෙනු ව්යුහය නිසි ලෙස සැලසුම් කරන්න.ඉන්ඩෙක්ස් සැලසුම්的重要性
* දෝෂ වලින් වැළැක්වීමට සහ කාර්යක්ෂමතාව වැඩි කිරීමට ප්රාථමික සහ අද්විතීය යතුරු නිසි ලෙස සැකසිය යුතුය.
සසඳන ප්රධාන ලක්ෂණ
- PostgreSQL හි ON CONFLICT DO UPDATE ස flexibil සංඝර්ෂණ ඉලක්කය සහය දේ.
- SQLite හි INSERT OR REPLACE ඇතුළත් කිරීමට පෙර මකා දමයි, එය triggers මත බලපෑම් ඇති කළ හැක.
අවසාන නිර්දේශ
- සරල insert/update මෙහෙයුම් සඳහා ON DUPLICATE KEY UPDATE ක්රියාත්මකව භාවිතා කරන්න.
- විශාල‑පරිමාණ මෙහෙයුම් හෝ සංකීර්ණ තර්ක සඳහා, එය ගනුදෙනු සහ පෙර‑පරීක්ෂණ සමඟ එකතු කර ආරක්ෂාව වැඩි කරන්න.
ON ON DUPLICATE KEY UPDATE** නිසි ලෙස භාවිතා කිරීමෙන්, ඔබට සංවර්ධන කාර්යක්ෂමතාවය සහ යෙදුම් විශ්වාසනීයතාවය දෙකම වැඩි කළ හැක. මෙම ලිපියේ සංකල්ප ඔබේ ව්යාපෘති වලට යොදා ගන්න.
8. නිතර අසන ප්රශ්න
මෙම ලිපිය MySQL හි ON DUPLICATE KEY UPDATE පිළිබඳ බොහෝ පැතිකඩ ආවරණය කර ඇත. මෙම කොටස තුළ, නිතර අසන ප්රශ්නවලට පිළිතුරු දී අතිරේක ප්රායෝගික අවබෝධයක් ලබා දේ.
Q1: MySQL හි කුමන අනුවාදයන් ON DUPLICATE KEY UPDATE සහය දක්වයි?
- A1: එය MySQL 4.1.0 සහ එහි පසු අනුවාද වල ලබා ගත හැක. එ obstante, සමහර හැසිරීම් අනුවාද අනුව වෙනස් විය හැකි බැවින්, ඔබේ විශේෂිත අනුවාදය සඳහා නිල ලේඛන සලකා බලන්න.
Q2: ප්රාථමික යතුරක් නොමැතිව ON DUPLICATE KEY UPDATE ක්රියා කරන්නේද?
- A2: නැත. එය ප්රාථමික යතුරක් හෝ අවම වශයෙන් එක් අද්විතීය යතුරක් ඇති වගු වල පමණක් ක්රියා කරයි.
Q3: ON DUPLICATE KEY UPDATE සහ REPLACE අතර වෙනස කුමක්ද?
- A3:
- ON DUPLICATE KEY UPDATE යනු අනුපිටපත් හඳුනාගත් විට නියමිත තීරුවල යාවත්කාලීන කරයි.
- REPLACE පවතින රෙකෝඩ් මකා දමා නව එකක් ඇතුළත් කරයි, එය මකාදැමීමේ ක්රියාකාරකම් උත්පාදනය කර දත්ත සමගිත්වයට බලපායි.
Q4: ON DUPLICATE KEY UPDATE භාවිතා කරන විට කාර්යක්ෂමතාවය කෙසේ සුදානම් කරගත හැකිද?
- A4:
- සුදුසු දර්ශක සැලසුම : ප්රාථමික සහ අද්විතීය යතුරු නිවැරදිව නිර්වචනය කර ඇති බවට සහතික වන්න.
- යාවත්කාලීන තීරුවල සංඛ්යාව අඩු කරන්න : අවශ්ය තීරුවල පමණක් යාවත්කාලීන කරන්න.
- ගනුදෙනු භාවිතා කරන්න : දත්ත ගබඩා පිරිවැය අඩු කිරීම සඳහා කණ්ඩායම් මෙහෙයුම් කරන්න.
Q5: අනුපිටපත් හඳුනාගැනීමේ කොන්දේසිය වෙනස් කළ හැදියිද?
- A5: කොන්දේසිය වෙනස් කිරීමට, ඔබට ප්රාථමික යතුර හෝ අද්විතීය යතුරේ නිර්වචනය වෙනස් කළ යුතුය. ON DUPLICATE KEY UPDATE හි හැසිරීමම වෙනස් කළ නොහැක.
Q6: “Duplicate entry” දෝෂය කුමන හේතුවෙන් සිදුවේ, එය කෙසේ සකස් කළ හැකිද?
- A6:
- හේතුව : ප්රාථමික යතුර හෝ අද්විතීය යතුරේ සීමාව උල්ලංඝනය කරන දත්ත ඇතුළත් කිරීමට උත්සාහ කිරීම.
- විසඳුම : wp:list {“ordered”:true} /wp:list
1. වගුවේ සැකැස්ම පරීක්ෂා කර අනුපිටපත් හේතු වන තීරුව හඳුනා ගන්න. 2. ඇතුළත් කිරීමට පෙර පවතින දත්ත පරීක්ෂා කිරීම සඳහා `SELECT` ප්රකාශනය භාවිතා කරන්න. 3. ගැටුම් හසුරවීමට **ON DUPLICATE KEY UPDATE** නිවැරදිව සැකසිය යුතුය.
Q7: ට්රිගර්ස් ON DUPLICATE KEY UPDATE මත බලපානවාද?
- A7: ඔව්. ON DUPLICATE KEY UPDATE භාවිතා කරන විට
INSERTසහUPDATEට්රිගර් දෙකම ක්රියාත්මක විය හැක. එම අනුව ට්රිගර් තර්ක සැලසුම් කරන්න.
Q8: වෙනත් දත්ත ගබඩා වලදී ඒම ප්රශ්නය භාවිතා කළ හැදියිද?
- A8: වෙනත් දත්ත ගබඩා වලද සමාන ක්රියාකාරිත්වයක් ඇත, නමුත් වාක්ය රචනය සහ හැසිරීම වෙනස් වේ. උදාහරණයක්:
- PostgreSQL : ON CONFLICT DO UPDATE
- SQLite : INSERT OR REPLACE
සාරාංශය
මෙම නිතර අසන ප්රශ්න ON DUPLICATE KEY UPDATE පිළිබඳ සාමාන්ය ප්රශ්නවලට පිළිතුරු දී ඇත. දෝෂ හේතු සහ කාර්යක්ෂමතාව වැඩි කිරීමේยุත්රණයන් අවබෝධ කර ගැනීම නිෂ්පාදන පරිසරවල විශේෂයෙන් වැදගත් වේ. ගැටළු ඇති වූ විට, මෙම මාර්ගෝපදේශ අනුගමනය කර ගැටළු විසඳන්න.
ON DUPLICATE KEY UPDATE පරිපූර්ණව අධ්යයනය කිරීමෙන්, ඔබට කාර්යක්ෂම සහ විශ්වාසනීය දත්ත ගබඩා මෙහෙයුම් ගොඩනැගිය හැක.


