ON/OFF 在 create table 语句中动态标识

ON/OFF the identity dynamically in a create table statement

我想通过 1 个 sql 文件创建有身份和无身份的 table。 我有 1 个解决方案,它通过 DB 名称切换 2 个语句中的 1 个,但它并不聪明,因为它需要在 table 定义更改时修复“2 行”。 给我你的最佳实践!!

在"merge"数据库中

CREATE TABLE shopping_result (
    id INT NOT NULL
    ,customer_code VARCHAR(100) NOT NULL
    ,shopping_on DATETIME
    )

在"store1","store2",...DB.

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