我在我从 sqlite3 终端运行的文件中准备了大量 sql 语句(插入调用)
.read tmp/commands.sql
当我在会话 #1 中运行该命令一次或多次时,一切顺利,没有错误,结果正如预期的那样,忽略可以防止重复项的错误消息)。
现在,如果我退出 sqlite3,.quit
然后立即返回并运行相同的命令,.read tmp/commands.sql
我在我的 commands.sql 中为每个 sql 调用获得一条错误消息"Error: near line xxx: FOREIGN KEY constraint failed"
PRAGMA foreign_keys = true;
了我认为允许关系你能解释一下为什么会在第二次会议上发生这种情况吗?
谢谢
PRAGMA foreign_keys = true;
/*
------------------------------------------------------------------
adding data in Folders for '0003_Runs/HiSeq2500/190921_7001450_0495_AH5JJ7BCX3
------------------------------------------------------------------
*/
INSERT OR IGNORE INTO Folders
(
Creator,
CreatorVersion,
DBAddDate,
FolderPath,
FolderName,
FolderSize,
Protection,
DeviceModel,
StartDate,
DeviceID,
RunNr,
FlowCellID,
ProjectNR,
Status,
DeliveryDate,
Comment
)
VALUES (
"AddIlluminaFolders2",
" 1.0; 2020-09-11",
"1600864879",
"0003_Runs/HiSeq2500",
"190921_7001450_0495_AH5JJ7BCX3",
"183173644288",
"0",
"HiSeq2500",
"190921",
"7001450",
"0495",
"AH5JJ7BCX3",
"",
"done",
"",
""
);
/*
------------------------------------------------------------------
adding data in Actions for 0003_Runs/HiSeq2500/190921_7001450_0495_AH5JJ7BCX3
------------------------------------------------------------------
*/
INSERT OR IGNORE INTO Actions
(
FolderID,
Creator,
CreatorVersion,
ActionDate,
ActionName,
Comment
)
VALUES (
last_insert_rowid(),
"AddIlluminaFolders2",
" 1.0; 2020-09-11",
"1600864879",
"AddIlluminaFolders2",
""
);
-- ----------------------------------------------------------------
后跟许多其他相同类型的块,直到文件结束 PRAGMA foreign_keys = true;
/*
Database structure for NCDataMngr and BigData_viewer
Author: Stéphane Plaisance - VIB-Nucleomics Core
database version: 1.0 - 2020-09-11
File Encoding : utf-8
REM: edit below if you change the database schema
=> INSERT INTO "version" (vnum, vdate) VALUES ("1.0", "2020-09-11");
*/
PRAGMA foreign_keys = false;
-- ----------------------------
-- Table structure for Folders
-- ----------------------------
DROP TABLE IF EXISTS "Folders";
CREATE TABLE "Folders" (
"FolderID" INTEGER NOT NULL PRIMARY KEY,
"Creator" TEXT(255,0),
"CreatorVersion" TEXT(255,0),
"DBAddDate" TEXT(255,0),
"FolderPath" TEXT(255,0) NOT NULL,
"FolderName" TEXT(255,0) NOT NULL,
"FolderSize" INTEGER(20,0),
"Protection" INTEGER(1,0),
"DeviceModel" TEXT(255,0),
"StartDate" TEXT(255,0),
"DeviceID" TEXT(255,0),
"RunNr" TEXT(255,0),
"FlowCellID" TEXT(255,0),
"ProjectNR" TEXT(255,0),
"Status" TEXT(255,0),
"DeliveryDate" TEXT(255,0),
"Comment" TEXT(255,0)
);
INSERT INTO "main".sqlite_sequence (name, seq) VALUES ("Folders", '0');
-- ----------------------------
-- Table structure for Actions
-- ----------------------------
DROP TABLE IF EXISTS "Actions";
CREATE TABLE "Actions" (
"FolderID" INTEGER NOT NULL,
"ActionID" INTEGER NOT NULL PRIMARY KEY,
"Creator" TEXT(255,0),
"CreatorVersion" TEXT(255,0),
"ActionDate" TEXT,
"ActionName" TEXT(255,0),
"Comment" TEXT(255,0),
CONSTRAINT "Folders2Actions" FOREIGN KEY ("FolderID") REFERENCES "Folders" ("FolderID") ON DELETE CASCADE ON UPDATE CASCADE
);
INSERT INTO "main".sqlite_sequence (name, seq) VALUES ("Actions", '0');
-- ----------------------------
-- Table structure for version
-- ----------------------------
DROP TABLE IF EXISTS "version";
CREATE TABLE "version" (
"vnum" text,
"vdate" text
);
INSERT INTO "main".sqlite_sequence (name, seq) VALUES ("version", '0');
INSERT INTO "version" (vnum, vdate) VALUES ("1.1", "2020-09-23");
-- ----------------------------
-- View structure for ActionView
-- ----------------------------
DROP VIEW IF EXISTS "ActionView";
CREATE VIEW "ActionView" AS SELECT
Actions.*,
Folders.FolderName
FROM
Actions
INNER JOIN Folders ON Folders.FolderID = Actions.FolderID
ORDER BY
Actions.FolderID ASC,
Actions.ActionID ASC;
-- ----------------------------
-- View structure for FolderView
-- ----------------------------
DROP VIEW IF EXISTS "FolderView";
CREATE VIEW "FolderView" AS SELECT
Folders.*
FROM
Folders
ORDER BY
Folders.FolderID ASC;
-- ----------------------------
-- Indexes structure for table Folders
-- ----------------------------
CREATE UNIQUE INDEX "idx_Folders_FolderPath_FolderName" on Folders ( "FolderPath", "FolderName" );
-- ----------------------------
-- Indexes structure for table Actions
-- ----------------------------
CREATE INDEX "idx_Actions_FolderID" ON Actions ("FolderID" ASC);
CREATE UNIQUE INDEX "idx_Actions_FolderID_Creator" ON Actions ("FolderID" ASC, "Creator");
PRAGMA foreign_keys = true;
last_insert_rowid()。在同一会话中多次运行 commands.sql 时,last_insert_rowid()
插入最后一行的值。永远不会出现 FOREIGN KEY 失败。调用新会话时,不会插入任何行(由于“重复”),last_insert_rowid()
其值为 0,因此操作插入时会违反 FOREIGN KEY。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句