Skip to content

Commit a02d442

Browse files
committed
drop and parse
1 parent 91fe799 commit a02d442

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

core/translate/alter.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,15 @@ pub fn translate_alter_table(
813813
input,
814814
|_program| {},
815815
)?;
816+
817+
program.emit_insn(Insn::DropTrigger {
818+
db: 0,
819+
trigger_name: trigger_name.clone(),
820+
});
821+
program.emit_insn(Insn::ParseSchema {
822+
db: cursor_id,
823+
where_clause: Some(format!("name = '{trigger_name}'")),
824+
});
816825
}
817826

818827
program.emit_insn(Insn::SetCookie {

testing/trigger.test

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -867,4 +867,25 @@ do_execsql_test_in_memory_any_error trigger-returning-not-allowed {
867867
CREATE TRIGGER trg AFTER INSERT ON t1 BEGIN
868868
INSERT INTO t2 VALUES (NEW.id) RETURNING id;
869869
END;
870-
}
870+
}
871+
872+
do_execsql_test_on_specific_db {:memory:} trigger-rename-column-old-ref {
873+
CREATE TABLE t1 (id INT, val TEXT);
874+
INSERT INTO t1 VALUES (1, 'a'), (2, 'b');
875+
CREATE TRIGGER trg BEFORE DELETE ON t1 FOR EACH ROW BEGIN
876+
UPDATE t1 SET val = 'deleted_' || OLD.val WHERE id != OLD.id;
877+
END;
878+
ALTER TABLE t1 RENAME COLUMN val TO val_new;
879+
DELETE FROM t1 WHERE id = 1;
880+
SELECT * FROM t1;
881+
} {2|deleted_a}
882+
883+
do_execsql_test_on_specific_db {:memory:} trigger-rename-column-new-ref {
884+
CREATE TABLE t1 (id INT, val TEXT);
885+
CREATE TRIGGER trg AFTER INSERT ON t1 BEGIN
886+
UPDATE t1 SET val = val || '_modified' WHERE id = NEW.id;
887+
END;
888+
ALTER TABLE t1 RENAME COLUMN val TO val_new;
889+
INSERT INTO t1 VALUES (1, 'test');
890+
SELECT * FROM t1;
891+
} {1|test_modified}

0 commit comments

Comments
 (0)