You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Using the following script in isql against the employee database demonstrates the error
/*
It is not possible to create a ddl-trigger with "any DDL statement" clause
fails with:
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-CREATE TRIGGER TAA_SQL1 failed
-Invalid command
-Database trigger type can't be changed
probably due to the following code in DdlNodes.epp:
2967:// ASF: Unregistered bug (2.0, 2.1, 2.5, 3.0): CREATE OR ALTER TRIGGER accepts different table
// than one used in already created trigger.
AutoCacheRequest requestHandle\(tdbb, drq\_m\_trigger2, DYN\_REQUESTS\);
FOR \(REQUEST\_HANDLE requestHandle TRANSACTION\_HANDLE transaction\)
TRG IN RDB$TRIGGERS
WITH TRG\.RDB$TRIGGER\_NAME EQ name\.c\_str\(\)
\{
if \(type\.specified && type\.value \!= \(FB\_UINT64\) TRG\.RDB$TRIGGER\_TYPE &&
TRG\.RDB$RELATION\_NAME\.NULL\)
\{
status\_exception::raise\(
Arg::Gds\(isc\_dsql\_command\_err\) <<
Arg::Gds\(isc\_dsql\_db\_trigger\_type\_cant\_change\)\);
\}
CREATE INDEX MP$MODIFIED_TABLES_IDX ON MP$MODIFIED_TABLES (RELATION_NAME);
set term ^;
create trigger TAA_SQL1
active after any DDL statement position 0
as
begin
if ((RDB$GET_CONTEXT('DDL_TRIGGER', 'OBJECT_TYPE') = 'TABLE') and
(RDB$GET_CONTEXT('DDL_TRIGGER', 'EVENT_TYPE') in ('CREATE', 'DROP') or
(RDB$GET_CONTEXT('DDL_TRIGGER', 'SQL_SOURCE') containing 'FIELD'))) then
insert into MP$MODIFIED_TABLES (RELATION_NAME)
values (RDB$GET_CONTEXT('DDL_TRIGGER', 'OBJECT_NAME'));
end^
set term ;^
Submitted by: Frank Schlottmann-Goedde (fsg)
Using the following script in isql against the employee database demonstrates the error
/*
It is not possible to create a ddl-trigger with "any DDL statement" clause
fails with:
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-CREATE TRIGGER TAA_SQL1 failed
-Invalid command
-Database trigger type can't be changed
probably due to the following code in DdlNodes.epp:
2967:// ASF: Unregistered bug (2.0, 2.1, 2.5, 3.0): CREATE OR ALTER TRIGGER accepts different table
// than one used in already created trigger.
*/
CREATE TABLE MP$MODIFIED_TABLES (
RELATION_NAME CHAR(31)
);
CREATE INDEX MP$MODIFIED_TABLES_IDX ON MP$MODIFIED_TABLES (RELATION_NAME);
set term ^;
create trigger TAA_SQL1
active after any DDL statement position 0
as
begin
if ((RDB$GET_CONTEXT('DDL_TRIGGER', 'OBJECT_TYPE') = 'TABLE') and
(RDB$GET_CONTEXT('DDL_TRIGGER', 'EVENT_TYPE') in ('CREATE', 'DROP') or
(RDB$GET_CONTEXT('DDL_TRIGGER', 'SQL_SOURCE') containing 'FIELD'))) then
insert into MP$MODIFIED_TABLES (RELATION_NAME)
values (RDB$GET_CONTEXT('DDL_TRIGGER', 'OBJECT_NAME'));
end^
set term ;^
Commits: c0b11f5
====== Test Details ======
Perhaps, code in this test needs to be re-implemented: it looks like trivial and doesn't cover all cases.
The text was updated successfully, but these errors were encountered: