▶️

SQLのテーブルを制約ごと複製する方法

2024/01/04に公開

テーブルのコピー方法例

制約ごとコピー

  1. 複製元のテーブルをスクリプト化
  2. スクリプトをコピー
    CREATE TABLE部分のNEW_TABLE_NAMEを新しく作るテーブル名に変更してSQL上で実行
    これで制約を持ったテーブルが作成される
USE [DB_NAME]
GO

/****** Object:  Table [dbo].[TABLE_A]    Script Date: 2023/12/26 17:33:02 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[NEW_TABLE_NAME](
	[AAA] [char](1) NOT NULL,
	[BBB] [char](6) NOT NULL,
	[CCC] [smallint] NOT NULL,
	[DDD] [smalldatetime] NOT NULL,
	[EEE] [char](8) NOT NULL,
	[FFF] [char](1) NOT NULL,
	[GGG] [char](1) NOT NULL,
	[HHH] [char](8) NULL,
	[III] [varchar](60) NULL,
	[JJJ] [varchar](40) NULL,
	[KKK] [varchar](40) NULL,
	[LLL] [varchar](60) NULL,
	[MMM] [varchar](60) NULL,
	[NNN] [varchar](13) NULL,
) ON [PRIMARY]
GO
  1. データを挿入[1]
INSERT INTO dbo.NEW_TABLE_NAME
SELECT * FROM dbo.TABLE_A

制約を除く要素のみをコピー

SELECT INTO * FROM TABLE_A
脚注
  1. 3実行時に作成したはずのテーブル名が無効と言われることがある。更新しても直らないがアプリ再起動でOK。 ↩︎

Discussion