hash
的表,当然是空的。 foreign key
。hash_copy
的表,它刚刚从另一个数据库中复制而且已经记录了很多(500'000条记录)。我尝试使用以下SQL语句
替换另一个表SET FOREIGN_KEY_CHECKS=0;
RENAME TABLE hash to hash_empty, hash_copy to hash;
SET FOREIGN_KEY_CHECKS=1;
问题是,现在我所有的外键都是hash_empty
,而这正是我试图避免的。
我想关闭外键只是为了将一个表换成另一个表(抛空并插入完整的记录),而不必遍历所有引用它的表。
这可能吗?
提前致谢。
答案 0 :(得分:2)
根据评论,可以将表复制到另一个表,如:
INSERT INTO hash SELECT * from hash_copy
更一般地说,insert-select语法的工作方式与您期望的一样;您可以指定列名(INSERT INTO hash(col1, col2, col3)
)并包含您通常会使用的任何SELECT
语法(函数,连接,where子句等)。