示例代碼
<script>
config = {
locateFile: filename => `sql-wasm.wasm`
}
initSqlJs(config).then(function(SQL)
{
//Create the database
const db = new SQL.Database();
//create first table - Questions (Parent Table)
let question = "CREATE TABLE Questions(qid INT NOT NULL, qdesc CHAR, PRIMARY KEY(qid));\
INSERT INTO Questions VALUES(1, 'set1');\
INSERT INTO Questions VALUES(2, 'set2');\
INSERT INTO Questions VALUES(3, 'set3');\
INSERT INTO Questions VALUES(4, 'set4');\
INSERT INTO Questions VALUES(5, 'set5');";
db.run(question);
const result = db.exec("SELECT * FROM Questions");
console.log(result);
//create second Table - Qimages (Child Table)
let qimage = "CREATE TABLE Qimages(img_id INT AUTO_INCREMENT, imgurl VARCHAR,FOREIGN KEY (qid) REFERENCES Questions(qid));\
INSERT INTO Qimages VALUES('https://www.w3schools.com/howto/img_woods.jpg',1);\
INSERT INTO Qimages VALUES('https://www.w3schools.com/howto/img_5terre.jpg',1);\
INSERT INTO Qimages VALUES('https://www.w3schools.com/howto/img_mountains.jpg',2);";
db.run(qimage);
const res = db.exec("SELECT * FROM Qimages");
console.log(res);
</script>
下面是我得到的錯誤
未捕獲(承諾)錯誤:外鍵定義中的未知列“qid”
uj5u.com熱心網友回復:
如訊息所述,Qimages 表中沒有 qid 列。我懷疑你想要: -
CREATE TABLE Qimages(img_id INT AUTO_INCREMENT, imgurl VARCHAR,qid INTEGER REFERENCES Questions(qid));
因此,使用列級版本的外鍵約束宣告的 qid 列(現在已定義)的值必須在 Question 表的 qid 列中具有相應的值。
或者,您可以使用:-
CREATE TABLE Qimages(img_id INT AUTO_INCREMENT, imgurl VARCHAR,qid INTEGER, FOREIGN KEY (qid) REFERENCES Questions(qid));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/451660.html
上一篇:檢查SQLite中的表是否為空
下一篇:使用變數創建SQLite表
