我想通过1个sql文件创建具有身份和无身份的表。我有一种解决方案,可以按数据库名称切换2条语句中的1条,但是这并不明智,因为在更改表定义时需要修复“ 2行”。给我你的最佳实践!
在“合并”数据库中
CREATE TABLE shopping_result (
id INT NOT NULL
,customer_code VARCHAR(100) NOT NULL
,shopping_on DATETIME
)
在“ store1”,“ store2”,...数据库。
CREATE TABLE shopping_result (
id INT identity(1, 1) NOT NULL
,customer_code VARCHAR(100) NOT NULL
,shopping_on DATETIME
)
合并作业
INSERT INTO merge.dbo.shopping_result
SELECT *
FROM store1.dbo.shopping_result
WHERE DATE < dateadd(- 1, year, getdate())
我决定使用动态查询。
DECLARE @sql nvarchar(MAX)
SET @sql ='CREATE TABLE shopping_result (
id INT '
IF DB_NAME() LIKE 'store%'
SET @sql = @sql + 'identity(1, 1) '
SET @sql = @sql + 'NOT NULL
,customer_code VARCHAR(100) NOT NULL
,shopping_on DATETIME
)'
EXEC sp_executesql @sql