[在创建表语句中动态地打开/关闭标识

问题描述 投票:0回答:1

我想通过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())
sql-server sql-server-2016 identity dynamic-sql
1个回答
0
投票

我决定使用动态查询。

    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
© www.soinside.com 2019 - 2024. All rights reserved.