给定一个表X和一个视图Y(与X具有相同的结构),有没有办法自动将X重命名为Z,将Y重命名为X,这样任何查询都不会看到名为X的任何内容?重命名X并创建视图也是有效的。
重点是,作为模式迁移计划的一部分,用模拟新版本中的旧版本的视图替换旧的表,以便两组客户端代码可以同时运行。
MySQL是我的选择,但其他人的信息也会很有用。
发布于 2008-11-29 00:23:03
这在postgres中是微不足道的,在mysql中是不可能的。
mysql将架构修改排除在事务之外。我有postgres背景,所以这是一件显而易见的事情(开始一个事务,做一些事情,提交或回滚-- postgres并不挑剔什么是“做一些事情”)。
如果你查看mysql的bug库,你可以在上面找到一些bug。
发布于 2009-02-09 19:51:56
与Oracle一样,MySQL将大多数DDL语句(CREATE TABLE、ALTER TABLE等)视为导致“隐式提交”。您不能使用事务模型保护其他连接看不到您的DDL更改。(我认为Postgres在这方面是不寻常的)。
您也许能够使用锁定表来锁定表,但我怀疑一旦重命名一个表,就会失去锁!锁定数据库可能会起作用,但很可能要求所有其他客户端在您的锁定请求被允许之前完全断开连接。
当然,这将导致其他客户端在您重命名表时阻塞,这可能是一个低成本的操作。
发布于 2016-03-18 15:57:52
https://stackoverflow.com/questions/326950
复制相似问题