當我從第一個表中刪除C#中的ExecuteNonQuery()
的主鍵時,它不會影響第二個表。 但是,當我對SQLiteStudio執行相同操作時,它會影響第二個表。ON DELETE CASCADE在c中不工作#
這裏是我的SQLite代碼:
CREATE TABLE Zdravila(
ID INTEGER PRIMARY KEY,
NACIONALNA_SIFRA INTEGER UNIQUE NOT NULL,
IME_ZDRAVILA TEXT,
POIMENOVANJE_IZDELKA TEXT NOT NULL,
SIFRA_REZIM_IZDAJE INTEGER NOT NULL,
ATC_OZNAKA TEXT NOT NULL,
NAZIV_POTI_UPORABE TEXT NOT NULL,
FOREIGN KEY(NACIONALNA_SIFRA) REFERENCES LastnostiZdravila(NACIONALNA_SIFRA) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE LastnostiZdravila(
NACIONALNA_SIFRA INTEGER PRIMARY KEY,
NAZIV_FARMACEVTSKE_OBLIKE TEXT NOT NULL,
KOLICINA_OSNOVNE_ENOTE INTEGER NOT NULL CHECK (KOLICINA_OSNOVNE_ENOTE > 0),
OZNAKA_OSNOVNE_ENOTE TEXT NOT NULL,
PAKIRANJE TEXT NOT NULL,
SIFRA_IMETNIKA_DOVOLJENJA TEXT NOT NULL
);
PRAGMA foreign_keys = ON;
而且我的C#代碼:
SQLiteConnection conn = new SQLiteConnection(poveziZBazo);
SQLiteCommand sqlQuery = new SQLiteCommand(sql);
sqlQuery.Connection = conn;
conn.Open();
SQLiteTransaction trans;
trans = conn.BeginTransaction();
sqlQuery.CommandText = sql;
j = sqlQuery.ExecuteNonQuery();
trans.Commit();
sqlQuery.Dispose();
conn.Close();
我的查詢: "DELETE FROM LastnostiZdravila WHERE NACIONALNA_SIFRA = " + "'" + NacionalnaSifraBrisanje + "'" + ";";
(我檢查NacionalnaSifraBrisanje的SQL命令)
'foreign_keys'設置是每個連接。 –
你是什麼意思? – Theory
將其設置爲一個連接不會影響其他任何連接。 –