diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_compatibility_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_compatibility_list.zsql
index aa46d49fd037b692e96f7c6434a4962c6324657f..6c499c1f7aa76a281ba9e3f46fc7e26484f73c8e 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_compatibility_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_compatibility_list.zsql
@@ -27,17 +27,7 @@ modified
 review_state
 summary
 </params>
-DELETE FROM
-  compatibility
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
-INSERT INTO
+REPLACE INTO
   compatibility
 VALUES
 <dtml-in prefix="loop" expr="_.range(_.len(uid))">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_delivery_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_delivery_list.zsql
index 063cfcbd888f157696d7e4c44b822f132a3672bc..918a4e437e0e85e16c1a83fbb025f2fbedd04739 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_delivery_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_delivery_list.zsql
@@ -20,16 +20,6 @@ getStartDateRangeMax
 getStopDate
 getStopDateRangeMin
 getStopDateRangeMax</params>
-DELETE FROM
-  delivery
-WHERE
-<dtml-in uid>      
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
 <dtml-let delivery_list="[]">
   <dtml-in prefix="loop" expr="_.range(_.len(uid))">
     <dtml-if "isDelivery[loop_item]">
@@ -37,7 +27,7 @@ WHERE
     </dtml-if>
   </dtml-in>
   <dtml-if expr="_.len(delivery_list) > 0">
-INSERT INTO
+REPLACE INTO
   delivery
 VALUES
     <dtml-in prefix="loop" expr="delivery_list">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_item_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_item_list.zsql
index 08633ca6fa4bd9caa1715c4ebf5b5fe686cb0a9b..a6453b3550d4d61a3ae4411e70087afcb3f8ff63 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_item_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_item_list.zsql
@@ -15,16 +15,6 @@ getDestinationSectionUid
 getResourceUid
 getVariationText
 getAggregateUidList</params>
-DELETE FROM
-  item
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
 <dtml-let movement_list="[]">
   <dtml-in prefix="loop" expr="_.range(_.len(uid))">
     <dtml-if "isMovement[loop_item] and getAggregateUidList[loop_item]">
@@ -32,7 +22,7 @@ WHERE
     </dtml-if>
   </dtml-in>
   <dtml-if expr="_.len(movement_list) > 0">
-INSERT INTO
+REPLACE INTO
   item
 VALUES
     <dtml-in prefix="loop" expr="movement_list">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_category_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_category_list.zsql
index a63e45306da57781ed77d3f49c02ae4f54215dfe..f34fb5f566095147de3731b998a011ddd2939b16 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_category_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_category_list.zsql
@@ -10,17 +10,7 @@ class_file:
 <params>uid
 isMovement
 getCategoryList</params>
-DELETE FROM
-  category
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
-INSERT INTO category VALUES
+REPLACE INTO category VALUES
 <dtml-in prefix="loop" expr="_.range(_.len(uid))">
 <dtml-if sequence-start><dtml-else>,</dtml-if>
     <dtml-if expr="getCategoryList[loop_item]">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_list.zsql
index ab2fd63a61409acfcd3e741e4a15a167a768b9d9..f606613441fbc181cbccbbab95f85e8823de5122 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_movement_list.zsql
@@ -22,16 +22,6 @@ isOrderable
 isDeliverable
 isDivergent
 getVariationText</params>
-DELETE FROM
-  movement
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
 <dtml-let movement_list="[]">
   <dtml-in prefix="loop" expr="_.range(_.len(uid))">
     <dtml-if "isMovement[loop_item]">
@@ -39,7 +29,7 @@ WHERE
     </dtml-if>
   </dtml-in>
   <dtml-if expr="_.len(movement_list) > 0">
-INSERT INTO
+REPLACE INTO
   movement
 VALUES
     <dtml-in prefix="loop" expr="movement_list">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_non_movement_category_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_non_movement_category_list.zsql
index 1f77ba1e9b1f50ed409f0613f2acbdedac9e7abf..08afaef6203dc15eb5d0cc5ae18b7659f7514580 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_non_movement_category_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_non_movement_category_list.zsql
@@ -9,17 +9,7 @@ class_file:
 </dtml-comment>
 <params>uid
 getAcquiredCategoryList</params>
-DELETE FROM
-  category
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
-INSERT INTO category VALUES
+REPLACE INTO category VALUES
 <dtml-in prefix="loop" expr="_.range(_.len(uid))">
 <dtml-if sequence-start><dtml-else>,</dtml-if>
     <dtml-if expr="getAcquiredCategoryList[loop_item]">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_object_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_object_list.zsql
index d767b19339c4bf4af315daa017251a879dbcdcdf..00e9564080d1005ad04efd5fd459a006bd3f1b6c 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_object_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_object_list.zsql
@@ -34,17 +34,7 @@ getStringIndex
 getIntIndex
 getFloatIndex
 hasCellContent</params>
-DELETE FROM
-  catalog
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
-INSERT INTO
+REPLACE INTO
   catalog
 VALUES
 <dtml-in prefix="loop" expr="_.range(_.len(uid))">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_category_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_category_list.zsql
index 2e698846a0bdbc0642796c9cabc7fde62e84d323..6c1fd88927ae1b935321475a45ecf2e6f0df9082 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_category_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_category_list.zsql
@@ -10,16 +10,6 @@ class_file:
 <params>uid
 predicate_property_dict
 isPredicate</params>
-DELETE FROM
-  predicate_category
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
 <dtml-let predicate_list="[]">
   <dtml-in prefix="loop" expr="_.range(_.len(uid))">
     <dtml-if "isPredicate[loop_item]">
@@ -27,7 +17,7 @@ WHERE
     </dtml-if>
   </dtml-in>
   <dtml-if expr="_.len(predicate_list) > 0">
-INSERT INTO predicate_category VALUES 
+REPLACE INTO predicate_category VALUES 
     <dtml-in prefix="loop" expr="predicate_list">
       <dtml-if sequence-start><dtml-else>,</dtml-if>
       <dtml-if "predicate_property_dict[loop_item].has_key('membership_criterion_category_list')">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_list.zsql
index dd1f6e2cf8055e4c1d5e7b43759b71743bc9c384..18ea9c5b055437f91131f7ff67085e2b3d310f49 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_predicate_list.zsql
@@ -10,16 +10,6 @@ class_file:
 <params>uid
 isPredicate
 predicate_property_dict</params>
-DELETE FROM
-  predicate
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
 <dtml-let predicate_list="[]">
   <dtml-in prefix="loop" expr="_.range(_.len(uid))">
     <dtml-if "isPredicate[loop_item]">
@@ -27,7 +17,7 @@ WHERE
     </dtml-if>
   </dtml-in>
   <dtml-if expr="_.len(predicate_list) > 0">
-INSERT INTO predicate VALUES 
+REPLACE INTO predicate VALUES 
     <dtml-in prefix="loop" expr="predicate_list">
       <dtml-if sequence-start><dtml-else>,</dtml-if>
 ( 
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_stock_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_stock_list.zsql
index 136d6b3f7fc244b616a8463f7cbc0983b16fecdb..da34e81647d9cf2853e9ccaafd095f93a319b55e 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_stock_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_stock_list.zsql
@@ -28,16 +28,6 @@ getStopDate
 isAccountable
 getPortalType
 getVariationText</params>
-DELETE FROM
-  stock
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
 <dtml-let row_list="[]">
   <dtml-in prefix="loop" expr="_.range(_.len(uid))">
     <dtml-if "isMovement[loop_item]">
@@ -55,7 +45,7 @@ WHERE
   </dtml-in>  
   
   <dtml-if "row_list">
-INSERT INTO
+REPLACE INTO
   stock
 VALUES
     <dtml-in prefix="row" expr="row_list">
diff --git a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_subject_list.zsql b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_subject_list.zsql
index 61fb9769a2d35456b32137ac994b8148a6dee7cd..b059507c27c0dca7cd40ccd49fba8da41517ca04 100755
--- a/product/ERP5Catalog/sql/erp5_mysql/z_catalog_subject_list.zsql
+++ b/product/ERP5Catalog/sql/erp5_mysql/z_catalog_subject_list.zsql
@@ -9,17 +9,7 @@ class_file:
 </dtml-comment>
 <params>Subject
 uid</params>
-DELETE FROM
-  subject
-WHERE
-<dtml-in uid>
-  uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
-</dtml-in>
-;
-
-<dtml-var "'\0'">
-
-INSERT INTO subject VALUES 
+REPLACE INTO subject VALUES 
 <dtml-in prefix="loop" expr="_.range(_.len(uid))">
   <dtml-if sequence-start><dtml-else>,</dtml-if>
   <dtml-let subject="Subject[loop_item]">