当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《一个sqlserver表有两个标识列吗?》经验,为你挑选了3个好方法。

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

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



1> Eugene Yokot..:
CREATE TABLE [dbo].[Foo](
    [FooId] [int] IDENTITY(1,1) NOT NULL,
    [BarId] [int] IDENTITY(1,1) NOT NULL
)

回报

Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.

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

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

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



2> benkevich..:

如果使用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

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



3> 小智..:

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

现在两者都会同时增加

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有