簡體   English   中英

SQLite:插入到身份列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM