我正在使用SQL Server 2008,并且我正在使用的数据库表的主键不是IDENTITY
列(不知道为什么)。我需要改变这一点。如何将auto_increment添加到SQL Server 2008中的列中
我在设计视图中的SQL Server Management Studio中,在列属性下,出于某种原因,我无法将标识规范更改为Yes
。
有什么,我失踪..我是新来的SQL Server - 任何想法,我失踪了?
下面是创建表
CREATE TABLE [dbo].[AR_Transactions](
[Trans_ID] [bigint] NOT NULL,
[DateTime] [datetime] NOT NULL,
[Cashier_ID] [nvarchar](50) NULL,
[CustNum] [nvarchar](12) NOT NULL,
[Trans_Type] [nvarchar](2) NOT NULL,
[Prev_Cust_Balance] [money] NULL,
[Prev_Inv_Balance] [money] NULL,
[Trans_Amount] [money] NOT NULL,
[Payment_Method] [nvarchar](4) NULL,
[Payment_Info] [nvarchar](20) NULL,
[Description] [nvarchar](38) NULL,
[Invoice_Number] [bigint] NOT NULL,
[Store_ID] [nvarchar](10) NOT NULL,
[Dirty] [bit] NOT NULL,
[Station_ID] [nvarchar](5) NULL,
[Payment_Type] [smallint] NULL,
CONSTRAINT [pkAR_Transactions]
PRIMARY KEY CLUSTERED([Store_ID] ASC, [Trans_ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[AR_Transactions]
ADD CONSTRAINT [DF_AR_Transactions_Trans_ID_AR_Transactions]
DEFAULT ((0)) FOR [Trans_ID]
ALTER TABLE [dbo].[AR_Transactions]
ADD CONSTRAINT [DF_AR_Transactions_Invoice_Number_AR_Transactions]
DEFAULT ((0)) FOR [Invoice_Number]
这里是我需要运行......它的一个完整的黑客,试图自动递增我自己插入
BEGIN TRANSACTION
INSERT INTO
[cresql].[dbo].[AR_Transactions](Trans_ID, DateTime , Dirty, Store_ID, Trans_Type,
Cashier_ID, CustNum, Trans_Amount, Prev_Cust_Balance)
SELECT
(SELECT MAX(Trans_ID) + 1 FROM [cresql].[dbo].[AR_Transactions]),
DATEADD(MINUTE, -30, Getdate()), 1, 1001, 'C', 100199, CustNum,
-Acct_Balance, Acct_Balance
FROM [cresql].[dbo].[Customer]
WHERE Acct_Balance <> 0
UPDATE [cresql].[dbo].[Customer]
SET Acct_Balance = 0
WHERE Acct_Balance <> 0
COMMIT TRANSACTION
你说的意思不能改变它。它会给你一个错误?它变灰了吗? – 2011-05-24 16:44:08
这个问题是身份是灰色到否,我不能改变它 – Trace 2011-05-24 17:03:27
在一个侧面说明:我会*不会*调用像'[日期时间]'的列'我也会推荐*而不是*长度小于5的列'varchar'或'nvarchar' - 2字节的开销只会让你失望。如果列为5个字符或更少,则使用'CHAR(x)'或'NCHAR(x)'。我相信你现在正在增加'Trans_ID'的方法在繁忙的环境中不安全,并且迟早会导致重复'Trans_ID'值... – 2011-05-24 19:01:52