Каскадные триггеры в SQLite

onClick необходимо передать функцию.

Ваш первый пример передает onClick функцию, которая вызывает this.props.onClick(this.state.id), когда она работает и работает должным образом.

Ваш второй пример передает onClick результат оценки this.props.onClick(this.state.id) , поэтому все идентификаторы печатаются сразу после загрузки компонента. Я предполагаю, что при вызове this.props.onClick(this.state.id) ничего не возвращается, поэтому onClick нечего вызывать, когда нажимают div.

9
задан Glorfindel 22 March 2019 в 05:59
поделиться

2 ответа

Триггер выглядит так, как будто он удаляет районы, id которых равен id_countries, то есть предложение where на самом деле

WHERE districts.id_countries = districts.id

. Вам нужно сослаться на идентификатор из таблицы стран. В триггере удаления используйте для этого "old".

CREATE TRIGGER [delete_country]
BEFORE DELETE
ON [countries]
FOR EACH ROW
BEGIN
DELETE FROM districts WHERE districts.id_countries = old.id;
END

Кроме того, я бы посоветовал изменить соглашение об именах вашей схемы. Обычно имя таблицы единственное число и соответствует объекту в строке. У меня была бы таблица страны с идентификатором и именем столбцов, таблица районов с идентификатором, country_id и именем и т. Д.

country
-------
id
name

district
-------
id
country_id
name

municipality
------------
id
district_id
name

parish
-----
id
municipality_id
name

Тогда триггер будет

CREATE TRIGGER [delete_country]
BEFORE DELETE
ON [country]
FOR EACH ROW
BEGIN
DELETE FROM district WHERE district.country_id = old.id;
END
13
ответ дан 4 December 2019 в 15:25
поделиться
PRAGMA foreign_keys = 1;

Это включит осуществление внешних ключей точно так же, как в MySQL. Если Вы определяете свою таблицу с 'НА, УДАЛЯЮТ КАСКАДНЫЙ' пункт как так:

CREATE TABLE "notification" (
    "rowid" INTEGER NOT NULL,
    "user"  INTEGER NOT NULL,
    "task"  TEXT NOT NULL,
    "payload"   TEXT NOT NULL,
    PRIMARY KEY("rowid"),
    FOREIGN KEY("user") REFERENCES "user" ON UPDATE CASCADE ON DELETE CASCADE
);

целая строка будет удалена, когда (в этом случае) это будет родительская пользовательская строка, удален.

P.S.: Я знаю, что это - мертвый поток, но я полагал, что поместил это здесь для людей, просматривающих в 2019.; D

0
ответ дан 4 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: