[英]SQLite: Insert Into Identity Column
我是SQLite的新手,正在嘗試運行以下代碼:
using (var cn = new SQLiteConnection("Data Source=:memory:;Version=3;")) {
cn.Open();
var cmd = cn.CreateCommand();
cmd.CommandText = "CREATE TABLE [ContentItems] ([Id] [int] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](100) NOT NULL, CONSTRAINT [PK_ContentItems] PRIMARY KEY ([Id]))";
cmd.ExecuteNonQuery();
var cmd2 = cn.CreateCommand();
cmd2.CommandText = "INSERT INTO [ContentItems] (Title) VALUES ('Test 1')";
cmd2.ExecuteNonQuery();
}
但這給出了錯誤:
由於違反約束而中止ContentItems.Id不能為NULL
我瀏覽了文檔,但是根據我過去的SQL經驗,我看不出為什么這行不通。 非常感謝您的幫助。 謝謝
SQLite使用AUTOINCREMENT關鍵字創建您想作為IDENTITY列的內容。 在您的示例中,沒有使用AUTOINCREMENT創建ID列,並且由於將其聲明為NOT NULL,因此必須提供一個值。
您要執行的CREATE語句是:
CREATE TABLE [ContentItems] (
[Id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Title] TEXT NOT NULL,
CONSTRAINT [PK_ContentItems] PRIMARY KEY ([Id])
)
請注意,SQLite使用TEXT數據類型(盡管它將將包含“ CHAR”的任何內容映射到該數據類型),並且不需要或不考慮最大字段長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.