Skip to content

Alter rename should rewrite stuff inside trigger #4007

@Pavan-Nambi

Description

@Pavan-Nambi

seed - 11128012010874390124 - just for my reference so i can later pull main and run

turso> CREATE TABLE t1 (id INT);
CREATE TABLE t (id INT);
turso> CREATE TRIGGER my_trigger AFTER INSERT ON t
BEGIN
    INSERT INTO t1 VALUES (NEW.id);
END;
turso> ALTER TABLE t1 RENAME TO t1_new;
turso> select * from sqlite_schema;
┌─────────┬────────────┬──────────┬──────────┬───────────────────────────────────────────────────────────────────────────────────────┐
│ type    │ name       │ tbl_name │ rootpage │ sql                                                                                   │
├─────────┼────────────┼──────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│ table   │ t1_new     │ t1_new   │        2 │ CREATE TABLE t1_new (id INT)                                                          │
├─────────┼────────────┼──────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│ table   │ t          │ t        │        3 │ CREATE TABLE t (id INT)                                                               │
├─────────┼────────────┼──────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│ trigger │ my_trigger │ t        │        0 │ CREATE TRIGGER my_trigger AFTER INSERT ON t BEGIN INSERT INTO t1 VALUES (NEW.id); END │
└─────────┴────────────┴──────────┴──────────┴───────────────────────────────────────────────────────────────────────────────────────┘
turso> INSERT INTO t VALUES (1);
  x Parse error: no such table: t1

turso>

turso on  sim [$] is 📦 v0.4.0-pre.3 via 🐍 v3.12.3 via 🦀 v1.88.0 took 53s
❯ sqlite3
SQLite version 3.50.4 2025-07-30 19:33:53
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> CREATE TABLE t1 (id INT);
CREATE TABLE t (id INT);
sqlite> CREATE TRIGGER my_trigger AFTER INSERT ON t
BEGIN
    INSERT INTO t1 VALUES (NEW.id);
END;
sqlite> ALTER TABLE t1 RENAME TO t1_new;
sqlite> select * from sqlite_schema;
table|t1_new|t1_new|2|CREATE TABLE "t1_new" (id INT)
table|t|t|3|CREATE TABLE t (id INT)
trigger|my_trigger|t|0|CREATE TRIGGER my_trigger AFTER INSERT ON t
BEGIN
    INSERT INTO "t1_new" VALUES (NEW.id);
END
sqlite>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions