Я хотел бы иметь возможность скопировать таблицу и ее данные, а также иметь все ограничения значение по умолчанию или привязка (как они обозначены в консоли управления SQL Server).над.
Скрипт ниже представляет собой тестовый скрипт для демонстрации идеи.Последняя строка, которую я предполагаю, должна быть заменена вызовом пользовательского хранимого процесса?
Примечание. Схема исходной таблицы (aSourceTbl
) меняется и может изменяться со временем.
--TEST SETUP
--Delete the prev tables so test script can be replayed
IF OBJECT_ID('aSourceTbl', 'U') IS NOT NULL
DROP TABLE aSourceTbl;
IF OBJECT_ID('aSourceCopyTbl', 'U') IS NOT NULL
DROP TABLE aSourceCopyTbl;
--Simple table to demonstrate table copying does not carry over the table constraits
CREATE TABLE [dbo].[aSourceTbl](
[aValue] [int] NOT NULL,
[DELETED] [int] NOT NULL
) ON [PRIMARY]
--Add some dummy data
INSERT INTO aSourceTbl (aValue, DELETED) VALUES (1,2);
INSERT INTO aSourceTbl (aValue, DELETED) VALUES (3,4);
--Add constraints of default values of 0 in this case
ALTER TABLE [dbo].[aSourceTbl] ADD CONSTRAINT [DF_aSourceTbl_aValue] DEFAULT ((0)) FOR [aValue]
ALTER TABLE [dbo].[aSourceTbl] ADD CONSTRAINT [DF_aSourceTbl_DELETED] DEFAULT ((0)) FOR [DELETED]
--Actual Required SQL script from here down
--The line below works nicely but does not copy the 2 constraints from the lines above into the new table.
--TODO QUESTION: Replace line below with the same functionaility + the constraints are also copied into new table
Select * INTO aSourceCopyTbl FROM aSourceTbl
Не могли бы вы мне помочь, предложив подходящий хранимый процесс, который может заменить последнюю строку в приведенном выше фрагменте SQL?Любая помощь с благодарностью:)
Ссылки:
- Подобный вопрос SO , однако, фокусируется на ограничениях PK.Меня интересуют только ограничения по умолчанию в этом случае.