我是应用程序,将我的应用程序的数据库从MySQL切换到SQLServer。
今天,我实现了一个所有POJO使用的抽象类中定义的自定义id生成策略。这有效,但我只能通过应用程序生成一个id。
通过这次数据库迁移,我想在创建模式之后,为所有表定义所有'id'列,以使用返回SELECT NEWID();
查询的过程。
这可能吗?怎么样?
答案 0 :(得分:0)
我喜欢使用默认约束来定义ID列:
create table a
(
id
uniqueidentifier not null
constraint [a.id.default.newid]
default( newid() )
constraint [a.id.primarykey]
primary key clustered,
--> other columns...
)
这样,您可以根据需要获取应用程序生成的ID或让数据库分配它。您的主键约束(或唯一约束)强制实施唯一性...如果您允许来自应用程序的传入ID,这一点很重要。
在脚本中......您不一定需要生成ID,不要指定值...并且默认启动。您也可以插入newid()
..
insert a
select newid()
from b
...并且SQL Server知道为每行调用newid()