【问题标题】:How to create two tables with same column definition in one script in T-SQL?如何在 T-SQL 的一个脚本中创建两个具有相同列定义的表?
【发布时间】:2020-06-01 09:37:24
【问题描述】:

我有两个脚本:

CREATE TABLE Customers
(
    Id INT,
    Age INT,
    FirstName NVARCHAR(20),
    LastName NVARCHAR(20),
    Email VARCHAR(30),
    Phone VARCHAR(20)
)

CREATE TABLE _Customers
(
    Id INT,
    Age INT,
    FirstName NVARCHAR(20),
    LastName NVARCHAR(20),
    Email VARCHAR(30),
    Phone VARCHAR(20)
)

唯一的区别是表名。

如何将 2 列定义替换为 1?因此,将来在重命名列或向一个表中添加新列时不会出现错误(表总是必须同样定义)?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 什么是 DBMS?为什么不只使用一个表和一个额外的列来指示一行是否是_ 客户?
  • 这听起来像是xy problem。倒退一步可能是值得的。除了表名中的指示符之外,如果有两个几乎相同的表,您将解决什么问题?

标签: sql sql-server tsql ddl


【解决方案1】:

在甲骨文中

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

当你更新问题时,它会是 sql server

SELECT * INTO newtable
FROM oldtable
WHERE condition

【讨论】:

    【解决方案2】:

    在 SQL Server 中,如果要创建具有相同列名和类型的新表,可以使用:

    select c.*
    into _customer
    from customer c
    where 1 = 0;
    

    在执行此操作之前,您可能需要删除 _customer

    注意:这不会复制约束或触发器,因此它不能替代其他数据库中可用的create table like。但您的问题似乎与列和类型有关。

    另外:age 是存储到表中的可怕值。它每天都在变化。

    【讨论】:

    • 评论[年龄]现场。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 2021-04-11
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多