skrip SQL CREATE menggunakan pertanyaan untuk menjana jadual sedia ada
Walaupun pertanyaan ini sendiri tidak menjana skrip CREATE secara langsung, ia boleh diperoleh daripada maklumat skema yang disimpan dalam SQL Server.
Kaedah:
Kod:
DECLARE @table_name SYSNAME = 'dbo.MyTable'; DECLARE @DDL NVARCHAR(MAX) = 'CREATE TABLE ' + QUOTENAME(@table_name) + ' ('; SELECT @DDL += CHAR(13) + ' [' + c.name + '] ' + CASE WHEN c.is_nullable = 1 THEN 'NULL' ELSE 'NOT NULL' END + ',' FROM sys.columns c WHERE c.[object_id] = OBJECT_ID(@table_name); SET @DDL = LEFT(@DDL, LEN(@DDL) - 1) + ')'; SELECT @DDL += CHAR(13) + ' CONSTRAINT [PK_' + @table_name + '] PRIMARY KEY (' + STUFF((SELECT ', [' + c.name + ']' FROM sys.index_columns c WHERE c.[object_id] = OBJECT_ID(@table_name) AND c.index_id = 1), 1, 2, '') + ')'; SELECT @DDL += CHAR(13) + ' WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF);'; PRINT @DDL;
Contoh output:
CREATE TABLE [dbo].[MyTable] ( [ID] INT NOT NULL, [Name] VARCHAR(50) NULL, [Age] INT NULL, CONSTRAINT [PK_MyTable] PRIMARY KEY ([ID]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Skrip Jadual SQL CREATE daripada Jadual Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!