使用LIKE或SELECT子句和CONSTRAINTS行为创建表?

时间:2013-12-09 10:26:10

标签: sql database copy clone create-table

我的问题特别是关于我们用于创建克隆的方法,或者更具体地说是使用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中一样工作?

我们可以为每个列提供多种情况和类型的约束,以便稍后或在创建表之后手动应用所有这些约束,如上所述,并不是一个好的选择。请解释。谢谢:))

1 个答案:

答案 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);

enter image description here

2]

sp_help pk

enter image description here

3]

select * into fk from (select * from pk) as tmp

enter image description here

4]

sp_help fk

enter image description here