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
我想通过 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