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