发布时某些 table 中的数据初始化
Data Initialization in certain table at the time of publish
我通过选择 SQL 服务器数据库模板在 Visual Studio 中开发我的数据库。我可能会创建数据库并不时发布它,因为我可能需要在开发时进行更改和编辑。问题是有 tables 这样的 Roles
table 可能需要一些默认数据,现在我可以通过编写和保存查询文件或使用 SQL 手动添加这些数据管理工作室。但是当我必须把这个数据库交给客户时,问题就来了,而客户可能对 SQL 的东西一无所知。我一直在想是否有一种方法可以在 table 定义时写一些东西,以便在发布时自动添加和初始化一些默认值(如果 table 中尚不可用)数据库,这将非常有帮助。
例如,给定以下脚本:
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 you want to create table if not exists and insert data if the data not exists
,你可以试试这个:
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
.
.
.
我通过选择 SQL 服务器数据库模板在 Visual Studio 中开发我的数据库。我可能会创建数据库并不时发布它,因为我可能需要在开发时进行更改和编辑。问题是有 tables 这样的 Roles
table 可能需要一些默认数据,现在我可以通过编写和保存查询文件或使用 SQL 手动添加这些数据管理工作室。但是当我必须把这个数据库交给客户时,问题就来了,而客户可能对 SQL 的东西一无所知。我一直在想是否有一种方法可以在 table 定义时写一些东西,以便在发布时自动添加和初始化一些默认值(如果 table 中尚不可用)数据库,这将非常有帮助。
例如,给定以下脚本:
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 you want to create table if not exists and insert data if the data not exists
,你可以试试这个:
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
.
.
.