首页 > 解决方案 > 如何使用 Peta Poco 将自动递增的 id 设置为另一列

问题描述

我使用 C#、SQL Server 和 PetaPoco,ID默认情况下会自动递增。我只想知道是否可以将此自动递增的 id 设置为另一列。

我还有 2 列需要使用 ID 的确切值进行设置。是否可以在 SQLCREATE TABLE语句中执行此操作,或者在之前或之后做一些钩子ExecuteNonQuery?如果可能的话,我不想创建视图或触发器。

标签: c#sql-serverpetapoco

解决方案


是的,当然 -CREATE TABLE允许您通过将关键字添加到列定义来定义哪个列将是自动增量列。IDENTITY这适用于任何基于整数的列或类型的列DECIMAL(p, 0)(带有0比例 - 没有点后数字)。

例如

CREATE TABLE dbo.YourTable
(
    ID INT NOT NULL,
    SomeOtherColumn BIGINT IDENTITY(1,1) NOT NULL,
    ....
)

有关完整和完整的详细信息,请参阅MS 文档CREATE TABLE

更新:所以你有 3 个独立的第三方应用程序,它们都可以访问这个表,并且都希望找到特定的列——你可以在其中之一创建标识列。其他两个可以计算,该标识列的持久“副本” - 像这样:

CREATE TABLE dbo.YourTable
(
    ID INT NOT NULL,
    YourIdentityColumn BIGINT IDENTITY(1,1) NOT NULL,
    ....
    SpecialColumnForApp2 AS YourIdentityColumn PERSISTED,
    SpecialColumnForApp3 AS YourIdentityColumn PERSISTED,
    ....
)

推荐阅读