我使用C#,SQL Server和PetaPoco,它们默认情况下会自动递增ID
。我只想知道是否可以将此自动递增的id设置为另一列。
我还有2列需要设置ID的确切值。是否可以在SQL CREATE TABLE
语句中执行此操作,还是可以在ExecuteNonQuery
之前或之后执行某些挂钩?如果可能的话,我不想创建视图或触发器。
答案 0 :(得分:2)
是的,当然-通过向列定义添加CREATE TABLE
关键字,IDENTITY
允许您定义哪个列将是自动增量列。此方法适用于任何基于整数的列或类型为DECIMAL(p, 0)
(缩放比例为0
的列,无尾号)。
例如
CREATE TABLE dbo.YourTable
(
ID INT NOT NULL,
SomeOtherColumn BIGINT IDENTITY(1,1) NOT NULL,
....
)
有关完整的完整信息,请参见MS docs on CREATE TABLE
更新:因此,您有3个单独的第三方应用程序,都可以访问此表,并且都希望找到特定的列-您可以在其中创建一个identity列。其他两个可以是该身份列的计算后的持久化“副本”,如下所示:
CREATE TABLE dbo.YourTable
(
ID INT NOT NULL,
YourIdentityColumn BIGINT IDENTITY(1,1) NOT NULL,
....
SpecialColumnForApp2 AS YourIdentityColumn PERSISTED,
SpecialColumnForApp3 AS YourIdentityColumn PERSISTED,
....
)