2014-02-06 45 views
0

對於詢問某種noob問題和感謝閱讀,感到抱歉。將序列添加到SQL Server 2012中的表中

我需要一個關於將SEQUENCE值添加到列的小小澄清。如果我執行下面的代碼的聲明被執行

CREATE TABLE EXECSQLORG_EMPLOYEE(
EMP_ID INT NOT NULL CONSTRAINT DF_EMP_ID DEFAULT NEXT VALUE FOR SEQ, 
EMP_NAME VARCHAR(100), 
EMP_GENDER BIT, 
EMP_SALARY MONEY, 
EMP_SHIFT BIT) GO 

還是我先定義一個表並執行Alter命令,語句被執行

ALTER TABLE EXEC_EMPLOYEE 
ADD CONSTRAINT DF_APP_ID DEFAULT NEXT VALUE FOR SEQ FOR APP_ID 

到目前爲止好!

一旦如果我嘗試順序添加到列與下面的代碼,我得到錯誤

CREATE TABLE EXECSQLORG_EMPLOYEE (
EMP_ID INT NOT NULL CONSTRAINT DF_EMP_ID DEFAULT NEXT VALUE FOR SEQ, 
EMP_NAME VARCHAR(100), 
EMP_GENDER BIT, 
EMP_SALARY MONEY, 
EMP_SHIFT BIT 
CONSTRAINT PK_APP_ID PRIMARY KEY (EMP_ID), 
CONSTRAINT DF_APP_ID DEFAULT NEXT VALUE FOR SEQ FOR EMP_ID 
) 
GO 

當我執行上面的代碼中,我得到以下錯誤

附近有語法錯誤的「。

+0

我沒有看到你創建'SEQUENCE'對象!它不是一個列屬性 - 它是一個獨立的,獨立的數據庫對象,你需要在使用前創建 - 「CREATE SEQUENCE ......」因爲序列是它自己的對象,所以你不能*添加一個序列到一個表* - 這不是它的工作原理。 –

+0

^ohh酷!得到了答案 「由於序列是它自己的對象,所以不能將序列添加到表中」 – Immu

回答

0

很抱歉,如果我錯過了瞭解,但是序列是POSTGRESQL概念爲自動增量(MySQL)值和IDENTITY爲SQL Server

所以在你的情況下:

CREATE TABLE EXECSQLORG_EMPLOYEE(
EMP_ID INT IDENTITY, 
EMP_NAME VARCHAR(100), 
EMP_GENDER BIT, 
EMP_SALARY MONEY, 
EMP_SHIFT BIT) GO 

我把這個錯誤答案的人在我的情況,因爲序列是SQL Server的一個新功能2012

+0

銷售服務器2012中存在序列,因此您可能需要刪除或更正您的答案。 – ErikE

+0

當然,這是SQL服務器......愚蠢autocorrect改變它。 – ErikE

相關問題