我的问题特别是关于我们用于创建克隆的方法,或者更具体地说是使用LIKE运算符复制表,或者在SELECT子句的帮助下还复制旧表中的所有约束?
CREATE TABLE newTable LIKE oldTable;
OR
CREATE TABLE newTable AS (SELECT * FROM oldTable) WITH NO DATA;
请解释这些上述语句是否会从oldTable创建确切的工作克隆,或者它只是从newTable for newTable创建结构。
当我说克隆时,我希望它必须创建oldTable的新工作副本,它将应用所有约束。例如,对于我的TIMESTAMP列,其定义如下所示。
LAST_UPDATE_TS TIMESTAMP NOT NULL GENERATED BY DEFAULT FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP;
我的newTable的LAST_UPDATE_TS是否可以像在oldTable中一样工作?
我们可以为每个列提供多种情况和类型的约束,以便稍后或在创建表之后手动应用所有这些约束,如上所述,并不是一个好的选择。请解释。谢谢:))
答案 0 :(得分:0)
据我了解,这个怎么样?
SELECT TMP.* INTO DESTINATION_TABLE
FROM
(SELECT * FROM SOURCE_TABLE WHERE 1=0) AS TMP
这适用于&从现有的表结构创建新的空表结构。
现在关于约束,我们将执行以下步骤,
1]
create table pk (id int primary key);
2]
sp_help pk
3]
select * into fk from (select * from pk) as tmp
4]
sp_help fk