Разрешение имен объектов базы данных
В SQLite объект базы данных (таблица, индекс, триггер или представление) идентифицируется по имени объекта и имени базы данных, в которой он находится. Объекты базы данных могут находиться в основной базе данных, временной базе данных или во вложенной базе данных.
Синтаксис команд DROP TABLE, DROP INDEX, DROP VIEW, DROP TRIGGER, REINDEX, ALTER TABLE и многих других позволяет пользователю указать объект базы данных либо только по имени, либо по сочетанию имени и имени базы данных. Если база данных не указана в ссылке на объект, SQLite ищет объект с соответствующим именем в основной, временной и всех вложенных базах данных. Временная база данных проверяется первой, за ней следует основная база данных, а затем все вложенные базы данных в порядке их добавления. Ссылка разрешается к первой найденной записи. Например:
/* Add a table named 't1' to the temp, main and an attached database */
ATTACH 'file.db' AS aux;
CREATE TABLE t1(x, y);
CREATE TEMP TABLE t1(x, y);
CREATE TABLE aux.t1(x, y);
DROP TABLE t1; /* Drop table in temp database */
DROP TABLE t1; /* Drop table in main database */
DROP TABLE t1; /* Drop table in aux database */
Если имя схемы указано в ссылке на объект, оно должно быть либо «main», либо «temp», либо именем схемы вложенной базы данных. Как и другие идентификаторы SQL, имена схем регистронезависимы. Если имя схемы указано, то только эта схема проверяется на наличие объекта с указанным именем.
Большинство ссылок на объекты могут разрешаться только на определенный тип объекта (например, ссылка, являющаяся частью оператора DROP TABLE, может разрешаться только на объект таблицы, а не на индекс, триггер или представление). Однако в некоторых контекстах (например, REINDEX) ссылка на объект может разрешаться на более чем один тип объекта. При поиске объектов с указанным именем в схемах баз данных объекты типов, которые не могут быть использованы в контексте ссылки, всегда игнорируются.
Эта страница была в последний раз изменена 08 января 2022 г. 05:02:57 UTC
SQLite is in the Public Domain.
https://sqlite.org/lang_naming.html