Sql 发布时特定表中的数据初始化

Sql 发布时特定表中的数据初始化,sql,sql-server,tsql,Sql,Sql Server,Tsql,我通过选择SQL Server数据库模板在Visual Studio中开发数据库。我可能会创建数据库并不时发布,因为我可能需要在开发时进行更改和编辑。问题是,有些表,例如角色表,可能需要一些默认数据,现在我可以通过编写和保存查询文件或使用SQL Management Studio手动添加这些数据。但是,当我必须将此数据库分发给客户时,问题就出现了,而客户可能对SQL知识一无所知。我一直在想,如果有一种方法可以在表定义时编写一些东西,以便在发布DB时自动添加和初始化一些默认值(如果表中还没有),那

我通过选择SQL Server数据库模板在Visual Studio中开发数据库。我可能会创建数据库并不时发布,因为我可能需要在开发时进行更改和编辑。问题是,有些表,例如
角色
表,可能需要一些默认数据,现在我可以通过编写和保存查询文件或使用SQL Management Studio手动添加这些数据。但是,当我必须将此数据库分发给客户时,问题就出现了,而客户可能对SQL知识一无所知。我一直在想,如果有一种方法可以在表定义时编写一些东西,以便在发布DB时自动添加和初始化一些默认值(如果表中还没有),那将非常有用

例如,给定以下脚本:

CREATE TABLE [dbo].[Roles]
(
    [Id] INT NOT NULL PRIMARY KEY,
    [Title] NVARCHAR(15) NOT NULL
)
如果数据库中没有此类记录,是否有办法在发布数据库时向上述代码中添加一些内容,以自动初始化以下内容:

Id        Title
1         Admin
2         Management
3         Staff
4         Customer
...

我不太了解您,但是如果您想在不存在的情况下创建表,并在不存在数据的情况下插入数据,您可以尝试以下方法:

if not exists (select * from DatabaseName.sys.tables where name = 'Roles')
begin
CREATE TABLE [dbo].[Roles]
(
    [Id] INT NOT NULL PRIMARY KEY,
    [Title] NVARCHAR(15) NOT NULL
)
end
go
if not exists(select * from Roles where id='1')
Begin
insert into Roles (id,title) values (1,'Admin')
end
go
if not exists(select * from Roles where id='2')
Begin
insert into Roles (id,title) values (2,'Management')
end
go
.
.
.