/usr/share/doc/firebird/sql.extensions
---------------- RETURNING clause ---------------- Function: Allow to return the column values actually stored in the table as a result of the "INSERT", "UPDATE OR INSERT", UPDATE, DELETE and MERGE statements. The most common usage is to retrieve the value of the primary key generated inside a BEFORE-trigger. Authors: Dmitry Yemanov <yemanov@yandex.ru> Adriano dos Santos Fernandes <adrianosf@uol.com.br> Syntax rules: INSERT INTO ... VALUES (...) [RETURNING <returning_list> [INTO <variable_list>]] INSERT INTO ... SELECT ... [RETURNING <returning_list> [INTO <variable_list>]] UPDATE OR INSERT INTO ... VALUES (...) ... [RETURNING <returning_list> [INTO <variable_list>]] UPDATE ... [RETURNING <returning_list> [INTO <variable_list>]] DELETE FROM ... [RETURNING <returning_list> [INTO <variable_list>]] MERGE INTO ... [RETURNING <returning_list> [INTO <variable_list>]] <returning_list> ::= <expr> [[AS] <alias>] {, <expr> [[AS] <alias>]}... Scope: DSQL, PSQL Example(s): 1. INSERT INTO T1 (F1, F2) VALUES (:F1, :F2) RETURNING F1, F2 INTO :V1, :V2; 2. INSERT INTO T2 (F1, F2) VALUES (1, 2) RETURNING ID INTO :PK; 3. DELETE FROM T1 WHERE F1 = 1 RETURNING F2; 4. UPDATE T1 SET F2 = F2 * 10 RETURNING OLD.F2, NEW.F2; 5. UPDATE T1 SET F2 = F2 * 10 RETURNING OLD.F2 OLD_F2, NEW.F2 AS NEW_F2; 6. UPDATE T1 SET F2 = F2 * 10 WHERE CURRENT OF C RETURNING NEW.F2; Note(s): 1. The INTO part (i.e. the variable list) is allowed in PSQL only (to assign local variables) and rejected in DSQL. 2. In DSQL, values are being returned within the same protocol roundtrip as the INSERT itself is executed. 3. If the RETURNING clause is present, then the statement is described as isc_info_sql_stmt_exec_procedure by the API (instead of isc_info_sql_stmt_insert), so the existing connectivity drivers should support this feature automagically. 4. Any explicit record change (update or delete) performed by AFTER-triggers is ignored by the RETURNING clause. 5. OLD and NEW could be used in RETURNING clause of UPDATE, INSERT OR UPDATE and MERGE statements. 6. In UPDATE and INSERT OR UPDATE statements, unqualified or qualified by table name/alias fields are resolved to NEW. 7. In MERGE WHEN MATCHED UPDATE and MERGE WHEN NOT MATCHED statements, unqualified or qualified by table name/alias fields are resolved to NEW. In MERGE WHEN MATCHED DELETE they are resolved to OLD. 8. Since v4 it's possible to use * and alias.*, as well OLD.* and NEW.* where applicable. Limitations: 1. The modify statement (INSERT, UPDATE, DELETE, MERGE) should operate in no more than one record (i.e. should be singleton). 2. The statement always return one row in DSQL, even if no record is inserted/updated/deleted. This may be changed in the future (i.e. return empty resultset).
.
Edit
..
Edit
README.PSQL_stack_trace.txt
Edit
README.aggregate_filter.md
Edit
README.aggregate_tracking
Edit
README.alternate_string_quoting.txt
Edit
README.autonomous_transactions.txt
Edit
README.blob_append.md
Edit
README.builtin_functions.txt
Edit
README.case
Edit
README.coalesce
Edit
README.column_type_psql.txt
Edit
README.common_table_expressions
Edit
README.context_variables
Edit
README.context_variables2
Edit
README.cumulative_roles.txt
Edit
README.current_time
Edit
README.cursor_variables.txt
Edit
README.cursors
Edit
README.data_type_results_of_aggregations.txt
Edit
README.data_types
Edit
README.db_triggers.txt
Edit
README.ddl.txt
Edit
README.ddl_access.txt
Edit
README.ddl_triggers.txt
Edit
README.default_parameters
Edit
README.derived_tables.txt
Edit
README.distinct
Edit
README.domains_psql.txt
Edit
README.exception_handling
Edit
README.execute_block
Edit
README.execute_statement
Edit
README.execute_statement2
Edit
README.explicit_locks
Edit
README.expression_indices
Edit
README.external_connections_pool
Edit
README.floating_point_types.md
Edit
README.global_temporary_tables
Edit
README.hex_literals.txt
Edit
README.identity_columns.txt
Edit
README.iif
Edit
README.isc_info_xxx
Edit
README.joins.txt
Edit
README.keywords
Edit
README.leave_labels
Edit
README.length
Edit
README.linger
Edit
README.list
Edit
README.management_statements_psql.md
Edit
README.mapping.html
Edit
README.merge.txt
Edit
README.null_value
Edit
README.nullif
Edit
README.offset_fetch.txt
Edit
README.order_by_expressions_nulls
Edit
README.packages.txt
Edit
README.plan
Edit
README.regr_functions.txt
Edit
README.returning
Edit
README.rows
Edit
README.savepoints
Edit
README.scrollable_cursors.txt
Edit
README.select_expressions
Edit
README.sequence_generators
Edit
README.set_bind.md
Edit
README.set_role
Edit
README.set_transaction.txt
Edit
README.similar_to.txt
Edit
README.sql_security.txt
Edit
README.statistical_functions.txt
Edit
README.subroutines.txt
Edit
README.substring_similar.txt
Edit
README.time_zone.md
Edit
README.trim
Edit
README.universal_triggers
Edit
README.update_or_insert
Edit
README.user_management
Edit
README.view_updates
Edit
README.window_functions.md
Edit