В основном у меня есть несколько представлений, основанных на простом столбце дискриминатора (например, CREATE VIEW имя таблицы AS SELECT * FROM tablename WHERE discrcolumn = "значение дискриминатора").
После вставки новой строки в это представление следует вставить «значение дискриминатора» в discrcolumn
.
Я пытался это сделать, но, видимо, MySQL сам по себе этого не понимает, поскольку выдает ошибку "Поле зрения для поля зрения в таблице не имеет значения по умолчанию". Конечно, для столбца дискриминатора установлено значение NOT NULL.
Как мне это исправить? Возможно триггер с предварительной вставкой?
ОБНОВЛЕНИЕ: Триггеры не будут работать с представлениями, см. Комментарий ниже.
Будет ли работать создание триггера для таблицы, которая использует переменную, и установка этой переменной при установлении соединения? Для каждого соединения значение этой переменной будет одинаковым, но оно может отличаться от других соединений.
EDIT:
Это похоже на работу ...
Установка:
CREATE TRIGGER insert_[tablename] BEFORE INSERT ON [tablename]
FOR EACH ROW SET NEW.[discrcolumn] = @variable
Продолжительность:
SET @variable = [descrvalue];
INSERT INTO [viewname] ([columnlist]) VALUES ([values]);