Я создал эти таблицы:sqlite3 python3 удаление каскад не работает, как ожидалось
import sqlite3
conn = sqlite3.connect('scheduler1111111.db')
c = conn.cursor()
c.execute('pragma foreign_keys = ON;')
c.execute('''CREATE TABLE sections
(id_sect INTEGER PRIMARY KEY, name TEXT)''')
c.execute('''DROP TABLE IF EXISTS subjects''')
c.execute('''CREATE TABLE subjects
(id_subj INTEGER PRIMARY KEY, name TEXT, career TEXT)''')
c.execute('''DROP TABLE IF EXISTS professors''')
c.execute('''CREATE TABLE professors
(id_p INTEGER PRIMARY KEY, name TEXT, lastname TEXT, cedula TEXT)''')
c.execute('''DROP TABLE IF EXISTS scheduler''')
c.execute('''CREATE TABLE scheduler
(id_sch INTEGER PRIMARY KEY, id_sect INTEGER, id_subj INTEGER, id_p INTEGER, Day TEXT, From_time INTEGER, To_time INTEGER,
FOREIGN KEY (id_sect) REFERENCES sections (id_sect)
FOREIGN KEY (id_subj) REFERENCES subjects (id_subj),
FOREIGN KEY (id_p) REFERENCES professors (id_p) ON DELETE SET DEFAULT)''')
Пусть я у профессора Mike X и John Z в таблицах профессоров, и у меня уже есть разделы в таблице разделов, и то же самое в таблицах объектов, если я попытаюсь добавить профессора в таблицу планировщика, которая не находится в таблице профессора, это не позволит мне, поэтому она работает, как и я ожидал, однако, если я заполню несколько строк в планировщик и ввод говорят, тот же профессор, Майк Х в трех строках, затем я ухожу и удаляю профессора Майка Х из таблицы профессоров, я думал, что эти три строки на таблице Scheduelr с Майком Х в нем будут удалены также, но я получаю NULL в столбце id_p, как я могу это сделать, чтобы он фактически удалял все строки, так что удаление каскада работает так, как ожидалось, а не только NULLS полей в дочерней таблице?
О, интересно большое вам спасибо –