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.