/ / comment obtenir des colonnes de table sans contraintes dans SQL Server 2008? - sql-server-2008, tsql

Comment obtenir des colonnes de table sans contraintes dans sql server 2008? - sql-server-2008, tsql

Je crée une table d'historique associée à chaque table principale en fonction de la requête suivante

SELECT TOP 0 * INTO HISTORY_TABLE FROM MASTER_TABLE

cette requête crée une table vide nommée HISTORY_TABLE constitué de colonnes similaires aux colonnes de MASTER_TABLE mais avec des contraintes "s qui sont appliquées à la MASTER_TABLE.

alors est-il possible d'obtenir des colonnes sans contraintes?

Réponses:

0 pour la réponse № 1

Ce n'est peut-être pas une bonne idée, mais c'est ce que vous voulez.

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

J'espère que ça aide.


0 pour la réponse № 2

Cela vous donne une table avec un ensemble propre de colonnes.

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

Mais ils sont si propres que vous aurez besoin de définir les PK, les index, etc.