I get the below error while trying to partition a table on mysql, does this mean a table cannot be partitioned if it's referencing foreign keys?
Foreign keys are not yet supported in conjunction with partitioning
2 Answers 2
Yes, it is one of the many restrictions on partitioned InnoDB tables.
Foreign keys not supported for partitioned InnoDB tables. Partitioned tables >using the InnoDB storage engine do not support foreign keys. More specifically, >this means that the following two statements are true:
No definition of an InnoDB table employing user-defined partitioning may >contain foreign key references; no InnoDB table whose definition contains foreign >key references may be partitioned.
No InnoDB table definition may contain a foreign key reference to a user-partitioned table; no InnoDB table with user-defined partitioning may contain columns referenced by foreign keys.
The scope of the restrictions just listed includes all tables that use the InnoDB storage engine. CREATE TABLE and ALTER TABLE statements that would result in tables violating these restrictions are not allowed.
You will need to program the foreign keys constraints in triggers and/or application level.
This article from Oracle has what looks like a really cool workaround where foreign keys on a partitioned table are implemented via an intermediate non-partitioned table with TRIGGER statements attached to it: https://blogs.oracle.com/mysql/post/how-to-partition-tables-with-foreign-keys-in-mysql-heatwave-with-a-workaround
-
1You may want to add the salient point from your link to your answer itself, lest it becomes useless when the link goes stale.mustaccio– mustaccio2025年02月19日 18:54:29 +00:00Commented Feb 19 at 18:54
SHOW CREATE TABLE
? With that, I can elaborate.