Руководство по языку sql
Download 1.22 Mb. Pdf ko'rish
|
Firebird3 SQL features
- Bu sahifa navigatsiya:
- INSERT INTO
SELECT *
FROM TA, TB JOIN TC ON TB.COL1 = TC.COL1 WHERE TA.COL2 = TB.COL2 Стабильность курсора Предыдущие релизы Firebird пострадали от печально известной ошибки, в результате которой операции модификации данных могли входить в бесконечный цикл и в зависимости от операции удалить все строки таблицы, обновлять строки до бесконечности или вставлять новые строки до тех пор, пока у хост машины не закончатся ресурсы. Все DML операторы (INSERT, UPDATE, DELETE, MERGE) пострадали от неѐ. Это произошло потому, что движок использует неявный курсор для этих операций. Для обеспечения стабильности, вставленные, обновлѐнные или удалѐнные строки необходимо отметить каким-либо образом, чтобы избежать повторных визитов. Другое решение добавление в план запроса внешней сортировки (SORT), что бы заставить курсор материализоваться. Начиная с Firebird 3, движок использует Undo Log для того, чтобы определить была ли строка уже вставлена или модифицирована в текущем курсоре. Важно. Стабилизация не работает, если в PSQL цикле используется оператор SUSPEND. Примеры: 1. До Firebird 3, такой запрос мог привести к бесконечному циклу, и вставлять записи до тех пор, пока не будут исчерпаны ресурсы хост машины. Начиная с Firebird 3, в таблицу T буду вставлены только те записи, которые в ней существуют на момент старта запроса. INSERT INTO T(col) SELECT col FROM T 2. До Firebird 3, такой запрос удалит все записи в таблице, вместо первых пяти. delete from T where col in (select col first 5 from T); 3. Следующий пример демонстрирует различное поведение оператора merge в Firebird 3 и более ранних версиях. Новые возможности языка SQL Firebird 3.0 23 -- таблица-источник: Download 1.22 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling