SQLSERVER - 如何定义表id生成的过程?

时间:2016-05-02 14:22:28

标签: sql-server stored-procedures

我是应用程序,将我的应用程序的数据库从MySQL切换到SQLServer。

今天,我实现了一个所有POJO使用的抽象类中定义的自定义id生成策略。这有效,但我只能通过应用程序生成一个id。

通过这次数据库迁移,我想在创建模式之后,为所有表定义所有'id'列,以使用返回SELECT NEWID();查询的过程。

这可能吗?怎么样?

1 个答案:

答案 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()