Skip to content

Prevent creating triggers on views #6432

@fulghum

Description

@fulghum

Dolt currently allows triggers to be created on a view, but they will never fire. MySQL also doesn't support running triggers on views, and does prevent trigger creation on views. Dolt should also disallow creating triggers on views.

Dolt behavior:

CREATE TABLE t (pk int primary key, col1 varchar(100), col2 varchar(200));
CREATE VIEW view2 AS select * from t;
DELIMITER // 
create trigger test_trigger AFTER INSERT on view2 FOR EACH ROW BEGIN update t set col1='CHANGED' where pk=1; END; //
show triggers; //
+--------------+--------+-------+---------------------------------------------------+--------+---------------------+----------+---------+----------------------+----------------------+--------------------+
| Trigger      | Event  | Table | Statement                                         | Timing | Created             | sql_mode | Definer | character_set_client | collation_connection | Database Collation |
+--------------+--------+-------+---------------------------------------------------+--------+---------------------+----------+---------+----------------------+----------------------+--------------------+
| test_trigger | INSERT | view2 | BEGIN update t set col1='CHANGED' where pk=1; END | AFTER  | 2023-08-01 18:08:38 |          |         | utf8mb4              | utf8mb4_0900_bin     | utf8mb4_0900_bin   |
+--------------+--------+-------+---------------------------------------------------+--------+---------------------+----------+---------+----------------------+----------------------+--------------------+

MySQL behavior:

CREATE TABLE t (pk int primary key, col1 varchar(100), col2 varchar(200));
CREATE VIEW view2 AS select * from t;
DELIMITER // 
create trigger test_trigger AFTER INSERT on view2 FOR EACH ROW BEGIN update t set col1='CHANGED' where pk=1; END; //
ERROR 1347 (HY000): 'dolt.view2' is not BASE TABLE

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions