Q
數據庫自動增加列
2
A
回答
0
上的SQL Server,這稱爲identity列
5
是的,當然是可以的。只需將此列作爲唯一鍵(不是主鍵),並且必須使用特殊屬性(SQL Server的「IDENTITY」)和MySQL的 「AUTO_INCREMENT」(請參見下面的示例)來聲明。另一列可以是主鍵。
在MySQL數據庫中的表可以聲明如下:
CREATE TABLE `mytable` (
`Name` VARCHAR(50) NOT NULL,
`My_autoincrement_column` INTEGER(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`Name`),
UNIQUE KEY `My_autoincrement_column` (`My_autoincrement_column`)
);
4
是的,你可以做到這一點。下面是使用IDENTITYSQL服務器樣本:
CREATE TABLE MyTable (
PrimaryKey varchar(10) PRIMARY KEY,
IdentityColumn int IDENTITY(1,1) NOT NULL,
DefaultColumn CHAR(1) NOT NULL DEFAULT ('N')
)
INSERT INTO MyTable (PrimaryKey) VALUES ('A')
INSERT INTO MyTable (PrimaryKey) VALUES ('B')
INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('C', 'Y')
INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('D', 'Y')
INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('E', DEFAULT)
--INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('F', NULL) -- ERROR
--> Cannot insert the value NULL into column 'DefaultColumn', table 'tempdb.dbo.MyTable'; column does not allow nulls. INSERT fails.
SELECT * FROM MyTable
下面是一個使用功能滾你自己的遞增列使用SQL Server的實例。這意味着沒有容錯或者我會這樣做。 (我會使用身份識別功能。)但是,知道您可以使用函數返回默認值。
DROP TABLE MyTable
GO
DROP FUNCTION get_default_for_mytable
GO
CREATE FUNCTION get_default_for_mytable
()
RETURNS INT
AS
BEGIN
-- Declare the return variable here
DECLARE @ResultVar int
-- Add the T-SQL statements to compute the return value here
SET @ResultVar = COALESCE((SELECT MAX(HomeBrewedIdentityColumn) FROM MyTable),0) + 1
-- Return the result of the function
RETURN @ResultVar
END
GO
CREATE TABLE MyTable (
PrimaryKey varchar(10) PRIMARY KEY,
IdentityColumn int IDENTITY(1,1) NOT NULL,
DefaultColumn CHAR(1) NOT NULL DEFAULT ('N'),
HomeBrewedIdentityColumn int NOT NULL DEFAULT(dbo.get_default_for_mytable())
)
GO
INSERT INTO MyTable (PrimaryKey) VALUES ('A')
INSERT INTO MyTable (PrimaryKey) VALUES ('B')
INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('C', 'Y')
INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('D', 'Y')
INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('E', DEFAULT)
--INSERT INTO MyTable (PrimaryKey, DefaultColumn) VALUES ('F', NULL) -- ERRROR
--> Cannot insert the value NULL into column 'DefaultColumn', table 'tempdb.dbo.MyTable'; column does not allow nulls. INSERT fails.
SELECT * FROM MyTable
結果
PrimaryKey IdentityColumn DefaultColumn HomeBrewedIdentityColumn
---------- -------------- ------------- ------------------------
A 1 N 1
B 2 N 2
C 3 Y 3
D 4 Y 4
E 5 N 5
2
我認爲你可以爲每個表中只有1身份自動增量列,此列不必是主鍵,但它意味着你必須插入主鍵你自己。
如果你已經有一個主鍵是自動增量,那麼我會盡量使用這個如果可能的話。
如果您試圖獲取一個行ID進行查詢範圍然後我會看看創建一個視圖,其中有行ID(不是SQL 2000或以下)。
你能在你打算使用自動增量列你的主鍵是什麼增加,並可能有助於想出了一個解決方案
0
Oracle和DB2有序列,但我認爲你正在尋找身份和所有主要的dbms(mysql,sql server,db2,oracle)都支持它。
相關問題
- 1. 如何自動增加和自動更改數據庫列值
- 2. 根據列添加自動遞增數
- 3. 具有自動增加列的VB.Net更新數據庫表
- 4. 未提交的數據庫事務和自動增加列
- 5. 如何在Java derby中自動增加數據庫列?
- 6. 自動增加數據庫表中的自定義ID
- 7. 增加來自php的數據庫值?
- 8. 表(數據庫)中的自動增量
- 9. 數據庫方案,自動增量
- 10. 如何在數據庫中添加新行時自動增加序列號?
- 11. Android數據大小自動增加
- 12. 自動增加數組數
- 13. DataTable的同步功能自動增量列使用數據庫
- 14. 數據庫中的自動序列增量器
- 15. SQL數據庫中的自動增量列
- 16. 伯克利數據庫Java版自動增加主鍵
- 17. 如何自動增加數據庫中的值? (LIVE)
- 18. 使用java在oracle數據庫中自動增加RowID
- 19. 使用自動增量將值添加到數據庫Id
- 20. Webservice返回自動增加數據庫中的值
- 21. 在數據庫中插入值自動增加ID
- 22. SQL Server數據庫中的ID自動增加和更新
- 23. 在phpmyadmin數據庫表中自動增加月份
- 24. 數據庫自動增加主鍵與企業登錄
- 25. 如何啓用PowerDesigner 16.5自動增加MySQL數據庫主鍵?
- 26. 將自動增加的字段插入到SQL數據庫
- 27. 如何在Android中自動增加數據庫中的代碼?
- 28. 添加一個自動遞增列的MySQL數據庫是不是主鍵
- 29. 如何使用phpmyadmin將自動增量添加到mysql數據庫中的列?
- 30. 如何在mysql數據庫中自動編號(自動增加)guid字段
執行此操作的方法是DBMS相關的。你正在使用哪個DBMS? – Rob 2009-05-02 00:13:19