一个sql server表有两个标识列吗?

Wil*_*rst 28 sql sql-server identity-column

我需要有一列作为主键,另一列是自动递增订单号字段.这可能吗?

编辑:我想我只会使用一个复合数作为订单号.不管怎么说,多谢拉.

Eug*_*ota 34

CREATE TABLE [dbo].[Foo](
    [FooId] [int] IDENTITY(1,1) NOT NULL,
    [BarId] [int] IDENTITY(1,1) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

回报

Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.
Run Code Online (Sandbox Code Playgroud)

所以,不,你不能有两个标识列.您当然可以使主键不自动递增(标识).

编辑:msdn:CREATE TABLE(Transact-SQL)CREATE TABLE(SQL Server 2000):

每个表只能创建一个标识列.


ben*_*ich 19

如果使用SQL Server 2012,则可以将序列用于具有默认值的第二列

--Create the Test schema
CREATE SCHEMA Test ;
GO

-- Create a sequence
CREATE SEQUENCE Test.SORT_ID_seq
    START WITH 1
    INCREMENT BY 1 ;
GO

-- Create a table
CREATE TABLE Test.Foo
    (PK_ID int IDENTITY (1,1) PRIMARY KEY,
    SORT_ID int not null  DEFAULT (NEXT VALUE FOR Test.SORT_ID_seq));
GO

INSERT INTO Test.Foo VALUES ( DEFAULT )
INSERT INTO Test.Foo VALUES ( DEFAULT )
INSERT INTO Test.Foo VALUES ( DEFAULT )

SELECT * FROM Test.Foo 

-- Cleanup
--DROP TABLE Test.Foo
--DROP SEQUENCE Test.SORT_ID_seq
--DROP SCHEMA Test
Run Code Online (Sandbox Code Playgroud)

http://technet.microsoft.com/en-us/library/ff878058.aspx


小智 8

添加一个标识列,然后添加一个计算列,其公式是标识列的名称

现在两者都会同时增加