如何在单个原子操作中将临时表转换为静态表,同时仍然不知道表结构,但在MySQL中保留表结构?对于预先创建的临时表: CREATE TEMPORARY TABLE _tmp SELECT 0 AS Col1, 'text' AS Col2;INSERT INTO permanent SELECT * FROM _tmp;
Oracle中的SQL命令截断比DELETE FROM table;更快,因为TRUNATE首先将指定的表完全删除,然后创建一个具有相同结构的新表(可能需要澄清,以防我是错误的)。由于截断是DDL的一部分,所以它在执行之前和完成执行之后隐式地发出COMMIT。如果是这种情况,那么由于数据字典中的整个结构,截断命令删除的表将永久丢失。在这种情况下,截断命令如何能够先删除表,然后用相同的结构重新创建相同的表?
我需要保持存档表的结构与主表相同。每当我们在主表上执行一些DDL时,我也希望在归档表上执行相同的DDL。请建议我如何在Oracle DB中实现它。考虑下面的场景,其中我有两个表A.T1_TAB和B.T1_TAB_ARCH。我在A.T1_TAB中添加了一个列(名称为A.T1_TAB(30))。我需要在B.T1_TAB_ARCH中添加相同的列。TABLE T1_TAB(ID NUMBER);
ALTER TABLE T1_TAB ADD NAME VARCHAR2(30);--Added