我可以使用以下查询sales_order在数据库中创建与主数据库中的表archived_db具有相同架构的表:sales_orderprod_db
CREATE TABLE archived_db.sales_order LIKE prod_db.sales_order
它工作正常,并archived_db使用与 中相同的表结构创建 sales_order 表prod_db。没有复制/创建的一件事是外键。
所以,我的问题是,是否可以使用具有相同外键的表 A 的架构来创建表 B?
你可以使用这个:
SHOW CREATE TABLE prod_db.sales_order
Run Code Online (Sandbox Code Playgroud)
这显示了 CREATE TABLE 语句语法中的表定义。
将其结果捕获到字符串中,然后将该字符串作为 SQL 语句运行。
我认为它CREATE TABLE <B> LIKE <A>不支持外键,因为外键是依赖于存储引擎的功能。与引擎无关的元数据不存储外键定义。这是 MySQL 奇怪的历史和可插拔存储引擎架构带来的意想不到的后果之一。
回复您的评论:
错误 1215 (HY000):无法添加外键约束
父表是否存在于您在其中创建复制表的存档数据库模式中?我想外键定义不限定表名称,并假设父表与表处于相同的架构中sales_order。
如果您需要指定外键引用的架构,最好像CREATE TABLE LIKE以前一样使用创建表,然后使用添加外键ALTER TABLE。
| 归档时间: |
|
| 查看次数: |
1778 次 |
| 最近记录: |