Как создать две таблицы с одинаковым определением столбца в одном скрипте в T- SQL? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть два сценария:

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 ]

2 голосов
/ 17 февраля 2020

На SQL Сервере, если вы хотите создать новую таблицу с теми же именами и типами столбцов, вы можете использовать:

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

Возможно, вы захотите удалить _customer перед этим.

Примечание. Это не копирует ограничения или триггеры, поэтому не является альтернативой create table like, доступной в других базах данных. Но ваш вопрос, похоже, касается столбцов и типов.

Также: age - ужасное значение для хранения в таблице. Он буквально меняется каждый день.

1 голос
/ 17 февраля 2020

в oracle

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

по мере обновления вопроса, поэтому sql сервер будет

SELECT * INTO newtable
FROM oldtable
WHERE condition
...