ALTER TABLE ENABLE/DISABLE ROW MOVEMENT
You can run this command to enable or disable row movement for a partitioned table.
When row migration is enabled, data in a partition can be migrated to another partition through an UPDATE operation. When row migration is disabled, if such an UPDATE operation occurs, a service error is reported.

If you are not allowed to update the column where the partition key is located, you are advised to disable row migration.
CREATE TABLE list_sales ( product_id INT4 NOT NULL, customer_id INT4 PRIMARY KEY, time_id DATE, channel_id CHAR(1), type_id INT4, quantity_sold NUMERIC(3), amount_sold NUMERIC(10,2) ) PARTITION BY LIST (channel_id) ( PARTITION channel1 VALUES ('0', '1', '2'), PARTITION channel2 VALUES ('3', '4', '5'), PARTITION channel3 VALUES ('6', '7'), PARTITION channel4 VALUES ('8', '9') ) ENABLE ROW MOVEMENT; INSERT INTO list_sales VALUES (153241,65143129,'2021-05-07','0',864134,89,34); -- The cross-partition update is successful, and data is migrated from partition channel1 to partition channel2. UPDATE list_sales SET channel_id = '3' WHERE channel_id = '0'; -- Disable row migration for the partitioned table. ALTER TABLE list_sales DISABLE ROW MOVEMENT; -- The cross-partition update fails, and an error is reported: fail to update partitioned table "list_sales". UPDATE list_sales SET channel_id = '0' WHERE channel_id = '3'; -- The update in the partition is still successful. UPDATE list_sales SET channel_id = '4' WHERE channel_id = '3';
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.