Pantuchi
Ученик
(205),
на голосовании
4 года назад
Имеется две таблицы. Одна таблица связана с другой по ключу 1 ко многим. CREATE TABLE Cars ( id INTEGER PRIMARY KEY AUTOINCREMENT <========= NOT NULL UNIQUE, car_name CHAR (100) DEFAULT не_указано, gos_number CHAR (10) NOT NULL UNIQUE, volume DOUBLE NOT NULL );
CREATE TABLE Drivers ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, driver_name CHAR (50) NOT NULL UNIQUE, phone CHAR (15), FOREIGN KEY ( <====== car_id ) REFERENCES Cars (id) NOT NULL ); Т. е. У машины может быть несколько водителей, а у водителя только одна. Если вводить данные через IDE Sqlite 3 и в поле car_id самому вбить id машины не существующее в Cars то IDE выдаст FORIGEN KEYconstraint field все как и задумывалось. Если тоже самое сделать только через код C# то запись спокойно вносится и никакие SQLiteException не выбрасываются. Может я что то пропустил и в классе System.Data.SQLite нужно как то включить эти связи?
поддержка внешних ключей должна быть включена при компиляции библиотеки. и еще, клиентом должна быть выполнена инструкция sql: PRAGMA foreign_keys = ON;
ant man
Мастер
(1201)
"должна быть выполнена инструкция sql: PRAGMA foreign_keys = ON;"
я же написал.
перед тем как вставлять данные, выполни эту команду.
CREATE TABLE Cars (
id INTEGER PRIMARY KEY AUTOINCREMENT <=========
NOT NULL
UNIQUE,
car_name CHAR (100) DEFAULT не_указано,
gos_number CHAR (10) NOT NULL
UNIQUE,
volume DOUBLE NOT NULL
);
CREATE TABLE Drivers (
id INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL
UNIQUE,
driver_name CHAR (50) NOT NULL
UNIQUE,
phone CHAR (15),
FOREIGN KEY ( <======
car_id
)
REFERENCES Cars (id) NOT NULL
);
Т. е. У машины может быть несколько водителей, а у водителя только одна. Если вводить данные через IDE Sqlite 3 и в поле car_id самому вбить id машины не существующее в Cars то IDE выдаст FORIGEN KEYconstraint field все как и задумывалось. Если тоже самое сделать только через код C# то запись спокойно вносится и никакие SQLiteException не выбрасываются. Может я что то пропустил и в классе System.Data.SQLite нужно как то включить эти связи?