これは ms create table スクリプトです:
これは、SchoolclassCode と Pupil テーブルの間の N:M 関係です。
CREATE TABLE Schoolclasscode (
schoolclassId integer PRIMARY KEY AUTOINCREMENT NOT NULL
);
CREATE TABLE SchoolclasscodePupil (
pupilId_FK integer NOT NULL,
schoolclassId_FK integer NOT NULL,
/* Foreign keys */
FOREIGN KEY (schoolclassId_FK)
REFERENCES Schoolclasscode(schoolclassId)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (pupilId_FK)
REFERENCES pupil(pupilId)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
CREATE TABLE pupil (
pupilId integer PRIMARY KEY AUTOINCREMENT NOT NULL
);
コードで SchoolclassCode オブジェクトを削除すると、次のようになります。
public void DeleteSchoolclass(int schoolclassCodeID, SQLiteConnection con)
{
using (SQLiteCommand com = new SQLiteCommand(con))
{
com.CommandText = "DELETE FROM schoolclasscode WHERE SchoolclassId = @SchoolclassId";
com.Parameters.Add(new SQLiteParameter("@SchoolclassId", schoolclassCodeID));
com.ExecuteNonQuery();
}
}
schoolclasscode テーブルのエントリが削除されます。しかし、それ以上はありません。SchoolclasscodePupil の schoolclasscodeId_FK を追加で削除することもできますが、カスケード削除制約によって削除された生徒はいません。
私は何を間違っていますか?