簡體   English   中英

SQLite C#不會插入NULL外鍵

[英]SQLite C# won't insert a NULL foreign key

我在外鍵列中添加NULL值時遇到問題。 我已將外鍵設置為NULLABLE,也已在C#中啟用了外鍵。

這是我的C#代碼:

private static SQLiteConnection _conn = new SQLiteConnection("DataSource = D:/SQLDB.sqlite;foreign keys=true;");
string sql = @"INSERT INTO Scan(id, name, employeeId, scannerId, orderItemId) VALUES (1,'name',1,1,  NULL);";

SQLiteCommand cmd = new SQLiteCommand(sql, _conn);
cmd.ExecuteNonQuery()

我有一個表Scan,其中有3個外鍵employeeId,scannerId和orderItemId。 EmployeeId和ScannerId不能為null,但orderItemId可以為null,因為在完成掃描狀態之前將無法使用它。

上面的SQL INSERT cmd引發異常:

foreign key mismatch - "Scan" referencing "OrderItem"

我不明白為什么,因為當我在SQLite中手動執行相同命令時,它可以正常工作。

這是我在SQLite中創建掃描表的方式:

CREATE TABLE `Scan` (
`id`    INTEGER NOT NULL,
`name`  VARCHAR(255),
`employeeId`    INTEGER NOT NULL,
`scannerId` INTEGER NOT NULL,
`orderItemId`   INTEGER,
PRIMARY KEY(id),
FOREIGN KEY(`employeeId`) REFERENCES `Employee`(`id`),
FOREIGN KEY(`scannerId`) REFERENCES `Scanner`(`id`),
FOREIGN KEY(`orderItemId`) REFERENCES `OrderItem`(`id`)
);

你能告訴我我的錯誤/錯誤在哪里嗎? 我究竟做錯了什么?

問題不在於外鍵的值。 (並使列為可空不會影響其他約束。)

錯誤消息“外鍵不匹配”報告數據庫架構中的錯誤。 問題是您在OrderItem表上沒有所需的索引

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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