Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 09:39   #1
5nizza77
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию SQLite foreign key

есть 2 базы связаные внешним ключем. подскажите как заставить Delphi подчиниться команде PRAGMA foreign_keys=ON. ниже код создания баз


Код:


var
  Form1: TForm1;

implementation

uses SQLite3, SQLiteTable3;

{$R *.dfm}
 Var
 sldb: TSQLiteDatabase;


 procedure TForm1.FormCreate(Sender: TObject);
begin
  sldb := TSQLiteDatabase.Create('test.db');

  try

    sldb.ExecSQL('PRAGMA foreign_keys=ON;'); // игнорирует почему то запрос

    if not sldb.TableExists('test') then   begin

 sldb.ExecSQL ('PRAGMA foreign_keys=on');
       sldb.ExecSQL('CREATE TABLE Test (id INTEGER PRIMARY KEY, T1 INTEGER, T2 INTEGER)');
       sldb.ExecSQL ('PRAGMA foreign_keys=on');
     end;

        if not sldb.TableExists('test1') then     begin
        sldb.ExecSQL ('PRAGMA foreign_keys=on');
       sldb.ExecSQL('CREATE TABLE Test1 (T1 INTEGER, T2 INTEGER, foreign key(T1) references Test(id)   on delete cascade on update cascade  )');
       sldb.ExecSQL ('PRAGMA foreign_keys=on');


          end;
  except
    ShowMessage('error.');
    Application.Terminate;
  end;
end;
5nizza77 вне форума Ответить с цитированием
Старый 11.05.2012, 11:14   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем вы тысячу раз включаете этот режим?
это команда БД, а не делфи, не понимаю проблемы..

http://www.sqlite.org/foreignkeys.html
почитайте немного.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2012, 13:04   #3
5nizza77
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию

дело в том, что я никак не могу включить этот режим. На офф сайте указано, что для включения нужно выполнить PRAGMA foreign_keys = ON;, но я не знаю куда и как прописать это в Delphi. Как я писал не получается, таблицы не связываются
5nizza77 вне форума Ответить с цитированием
Старый 11.05.2012, 13:24   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как вы проверяли что они не связываются?

связь проявляется при попытке добавления во вторую таблицу значения с несуществующим id в первой.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2012, 13:46   #5
5nizza77
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию

Вот так именно и проверил. Во вторую таблицу добавляются значения с несуществующим id в первой
5nizza77 вне форума Ответить с цитированием
Старый 11.05.2012, 14:21   #6
5nizza77
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию

Проблема решилась скачкой другого файла sqlite3.dll
5nizza77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПО ПОВОДУ "FOREIGN KEY" и дочерней таблицы? sem_1989 SQL, базы данных 2 01.08.2011 11:37
Конструкция CONSTRAINT FOREIGN KEY REFERENCES в MySQL Phantom SQL, базы данных 5 03.06.2011 07:55
Ошибка создания foreign key Geddar SQL, базы данных 6 19.05.2009 20:58
violation of FOREIGN KEY KiSH333 БД в Delphi 1 17.02.2009 16:05