aboutsummaryrefslogtreecommitdiff
path: root/test/trigger1.test
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2009-07-03 15:37:27 +0000
committerdrh <drh@noemail.net>2009-07-03 15:37:27 +0000
commitb1819a0b95f51464b8ec9299b8dc6aa27759e828 (patch)
tree89c4635259e4e55486762dd933d34784da487d30 /test/trigger1.test
parent06150f95e8475fd98db35d7c825d7459b596bf37 (diff)
downloadsqlite-b1819a0b95f51464b8ec9299b8dc6aa27759e828.tar.gz
sqlite-b1819a0b95f51464b8ec9299b8dc6aa27759e828.zip
Make explicit the restrictions on UPDATE, DELETE, and INSERT statement syntax
within triggers. Ticket #3947. (CVS 6840) FossilOrigin-Name: c8bf40df7be728b11bb633516d1988c6064a9d70
Diffstat (limited to 'test/trigger1.test')
-rw-r--r--test/trigger1.test60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/trigger1.test b/test/trigger1.test
index 18271e427..b344beecc 100644
--- a/test/trigger1.test
+++ b/test/trigger1.test
@@ -639,4 +639,64 @@ do_test trigger1-15.2 {
catchsql { INSERT INTO tA VALUES('abc', 2, 3) }
} {1 {datatype mismatch}}
+# Ticket #3947: Do not allow qualified table names on INSERT, UPDATE, and
+# DELETE statements within triggers. Actually, this has never been allowed
+# by the grammar. But the error message is confusing: one simply gets a
+# "syntax error". That has now been changed to give a full error message.
+#
+do_test trigger1-16.1 {
+ db eval {
+ CREATE TABLE t16(a,b,c);
+ CREATE INDEX t16a ON t16(a);
+ CREATE INDEX t16b ON t16(b);
+ }
+ catchsql {
+ CREATE TRIGGER main.t16err1 AFTER INSERT ON tA BEGIN
+ INSERT INTO main.t16 VALUES(1,2,3);
+ END;
+ }
+} {1 {qualified table names are not allowed on INSERT, UPDATE, and DELETE statements within triggers}}
+do_test trigger1-16.2 {
+ catchsql {
+ CREATE TRIGGER main.t16err2 AFTER INSERT ON tA BEGIN
+ UPDATE main.t16 SET rowid=rowid+1;
+ END;
+ }
+} {1 {qualified table names are not allowed on INSERT, UPDATE, and DELETE statements within triggers}}
+do_test trigger1-16.3 {
+ catchsql {
+ CREATE TRIGGER main.t16err3 AFTER INSERT ON tA BEGIN
+ DELETE FROM main.t16;
+ END;
+ }
+} {1 {qualified table names are not allowed on INSERT, UPDATE, and DELETE statements within triggers}}
+do_test trigger1-16.4 {
+ catchsql {
+ CREATE TRIGGER main.t16err4 AFTER INSERT ON tA BEGIN
+ UPDATE t16 NOT INDEXED SET rowid=rowid+1;
+ END;
+ }
+} {1 {the NOT INDEXED clause is not allowed on UPDATE or DELETE statements within triggers}}
+do_test trigger1-16.5 {
+ catchsql {
+ CREATE TRIGGER main.t16err5 AFTER INSERT ON tA BEGIN
+ UPDATE t16 INDEXED BY t16a SET rowid=rowid+1 WHERE a=1;
+ END;
+ }
+} {1 {the INDEXED BY clause is not allowed on UPDATE or DELETE statements within triggers}}
+do_test trigger1-16.6 {
+ catchsql {
+ CREATE TRIGGER main.t16err6 AFTER INSERT ON tA BEGIN
+ DELETE FROM t16 NOT INDEXED WHERE a=123;
+ END;
+ }
+} {1 {the NOT INDEXED clause is not allowed on UPDATE or DELETE statements within triggers}}
+do_test trigger1-16.7 {
+ catchsql {
+ CREATE TRIGGER main.t16err7 AFTER INSERT ON tA BEGIN
+ DELETE FROM t16 INDEXED BY t16a WHERE a=123;
+ END;
+ }
+} {1 {the INDEXED BY clause is not allowed on UPDATE or DELETE statements within triggers}}
+
finish_test