6

我正在根据以下查询创建与每个主表关联的历史表

SELECT TOP 0 * INTO HISTORY_TABLE FROM MASTER_TABLE

此查询创建一个名为的空表HISTORY_TABLE,其中包含与 in 中的列类似MASTER_TABLE但具有应用于MASTER_TABLE.

那么他们有什么方法可以不受限制地获得列吗?

4

2 回答 2

0

这将为您提供一个包含一组干净列的表。

select top 0 * into #bounce from MASTER_TABLE
select * into HISTORY_TABLE from #bounce

但是它们非常干净,您需要定义 PK、索引等(但无论如何您可能需要在历史记录表上有所不同...)

于 2013-11-10T15:45:19.483 回答
0

这可能不是一个好主意,但这可以满足您的需求..

//This creates the table with constraints
SELECT TOP 0 * INTO HISTORY_TABLE FROM MASTER_TABLE

//This will drop all the constraints
DECLARE @database NVARCHAR(50)
DECLARE @table NVARCHAR(50)
DECLARE @sql NVARCHAR(255)
SET @database = 'databasename'
SET @table = 'HISTORY_TABLE'
WHILE EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE constraint_catalog=@database AND table_name=@table)
BEGIN
SELECT @sql = 'ALTER TABLE ' + @table + ' DROP CONSTRAINT ' + CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE constraint_catalog=@database AND table_name=@table
EXEC sp_executesql @sql
END

我希望这有帮助。

于 2013-11-08T07:30:55.523 回答