2014-01-21 69 views
0

我有一個表中的鍵是主鍵。我想添加seqNo這個鍵應該是自動遞增的,但是不允許它作爲自動遞增。添加除主鍵以外的自動增量列

因爲已經有一個主鍵,

是否有可能使SEQNO自動增量?目前seqNo不存在。我想添加它

+0

它應該是可能的,我會想。在大多數數據庫系統中,自動遞增/標識/序列號和主鍵是完全正交的概念。 –

+1

你不能這樣做。另外,你爲什麼想要? – Strawberry

+0

@Strawberry:保留記錄,我有多少總記錄和whoch numner上的哪條記錄 –

回答

1

您可以有一個複合主鍵它是由兩列或更多列組成的主鍵。

CREATE TABLE userdata (
    userid integer, 
    userdataid integer, 
    info char(200), 
    primary key (userid, userdataid) 
); 
+1

我看不到這個信息的相關性。 – Strawberry

+0

@Strawberry你可以有一個複合主鍵,但只有一列可以設置爲自動增量[**見小提琴這裏**](http://sqlfiddle.com/#!2/e35d9/2) –

+0

@mkhalidkunaid我' m很清楚auto_increment的效用,謝謝。這與這個「問題」無關。 – Strawberry

1

您有以下選擇。

  1. 製作上每一個INSERT語句
  2. 使用順序遞增的列值的觸發器,但一旦生成序列值永遠不會被再次生成(意思是,你會得到,如果你的值的差距由於某種原因,你的插入失敗)
1

維涅什,請考慮以下...

DROP TABLE IF EXISTS test; 

CREATE TABLE test 
(testID int(11) NOT NULL 
, string varchar(45) DEFAULT NULL 
, testInc int(11) NOT NULL AUTO_INCREMENT 
, PRIMARY KEY (testID) 
, KEY testInc (testInc) 
); 

INSERT INTO test 
(testID 
, string 
) values 
(1 
,'Hello' 
); 

INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y; 
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y; 
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y; 
Query OK, 4 rows affected (0.03 sec) 

SELECT * FROM test; 
+--------+--------+---------+ 
| testID | string | testInc | 
+--------+--------+---------+ 
|  1 | Hello |  1 | 
|  2 | Hello |  2 | 
|  3 | Hello |  3 | 
|  4 | Hello |  4 | 
|  5 | Hello |  6 | 
|  6 | Hello |  7 | 
|  7 | Hello |  8 | 
|  8 | Hello |  9 | 
+--------+--------+---------+ 

注意行(8)的數量,和testinc的值(9)不同的。這不是OP想要的。我用來生成PK的MAX()技巧也不好,因爲它受到運行時錯誤的影響。同樣的http://www.sqlfiddle.com/#!2/d29a5b/1

的一點是

小提琴...存儲順序號是毫無意義的。

+0

謝謝,但在使用phpmyadmin時,我添加了新列seq_no。將其設置爲索引和自動增量。這給出了錯誤:多個主鍵定義。我必須在此處更新現有表,以添加自動增量列 –

+0

'alter table frrole_combined add seq_no varchar(64)not null; 「這有什麼問題? –

+0

@Programming_crazy你真的不會聽我的,是嗎? – Strawberry