/ / jak zdobyć kolumny tabeli bez ograniczeń w serwerze sql 2008? - sql-server-2008, tsql

jak uzyskać kolumny tabeli bez ograniczeń w serwerze sql 2008? - sql-server-2008, tsql

Tworzę tabelę historii powiązaną z każdą tabelą wzorcową na podstawie następującego zapytania

SELECT TOP 0 * INTO HISTORY_TABLE FROM MASTER_TABLE

to zapytanie tworzy pustą tabelę o nazwie HISTORY_TABLE składający się z kolumn podobnych do kolumn w MASTER_TABLE ale z ograniczeniami, które są stosowane do MASTER_TABLE.

więc jest ich sposób na uzyskanie kolumn bez ograniczeń?

Odpowiedzi:

0 dla odpowiedzi № 1

To może nie być dobry pomysł, ale robi to, co chcesz ..

//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

Mam nadzieję, że to pomoże.


0 dla odpowiedzi nr 2

To da ci tabelę z czystym zestawem kolumn.

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

Ale są tak czyste, że będziesz musiał zdefiniować PK, indeksy itp. (Ale i tak może ci się to przydać w tabeli historii ...)