working with pdf in c# : Add bookmark pdf application software tool html winforms wpf online air_htmldevguide35-part481

345
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
The two REPLACE INTO forms of the statement are equivalent to using the standard INSERT [OR conflict-
algorithm] form with the REPLACE conflict algorithm (i.e. the INSERT OR REPLACE... form).
The two REPLACE INTO forms of the statement are equivalent to using the standard INSERT [OR conflict-
algorithm] form with the REPLACE conflict algorithm (i.e. the INSERT OR REPLACE... form).
UPDATE
The update command changes the existing records in a table.
sql-statement  ::=  UPDATE [database-name.] table-name SET column1=value1, column2=value2,... 
[WHERE expr]
The command consists of the UPDATE keyword followed by the name of the table in which you want to update the 
records. After the SET keyword, provide the name of the column and the value to which the column to be changed as 
a comma-separated list. The WHERE clause expression provides the row or rows in which the records are updated.
DELETE
The delete command is used to remove records from a table.
sql-statement  ::=  DELETE FROM [database-name.] table-name [WHERE expr]
The command consists of the DELETE FROM keywords followed by the name of the table from which records are to 
be removed.
Without a WHERE clause, all rows of the table are removed. If a WHERE clause is supplied, then only those rows that 
match the expression are removed. The WHERE clause expression must resolve to a boolean value. For a definition of 
permitted expressions, see Expressions.
Data definition statements
Data definition statements are used to create, modify, and remove database objects such as tables, views, indices, and 
triggers. The following data definition statements are supported:
• Tables:
• CREATE TABLE
• ALTER TABLE
• DROP TABLE
• Indices:
• CREATE INDEX
• DROP INDEX
• Views:
• CREATE VIEWS
• DROP VIEWS
• Triggers:
• CREATE TRIGGERS
• DROP TRIGGERS
Add bookmark pdf - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
pdf reader with bookmarks; pdf create bookmarks
Add bookmark pdf - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
creating bookmarks in pdf from word; creating bookmarks pdf files
346
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
CREATE TABLE
A CREATE TABLE statement consists of the keywords CREATE TABLE followed by the name of the new table, then 
(in parentheses) a list of column definitions and constraints. The table name can be either an identifier or a string.
sql-statement       ::=  CREATE [TEMP | TEMPORARY] TABLE [IF NOT EXISTS] [database-name.] table-
name  
( column-def [, column-def]* [, constraint]* )  
sql-statement       ::=  CREATE [TEMP | TEMPORARY] TABLE [database-name.] table-name AS select-
statement  
column-def          ::=  name [type] [[CONSTRAINT name] column-constraint]*  
type                ::=  typename | typename ( number ) | typename ( number , number )  
column-constraint   ::=  NOT NULL [ conflict-clause ] |  
PRIMARY KEY [sort-order] [ conflict-clause ] [AUTOINCREMENT] |  
UNIQUE [conflict-clause] |  
CHECK ( expr ) |  
DEFAULT default-value |  
COLLATE collation-name  
constraint          ::=  PRIMARY KEY ( column-list ) [conflict-clause] |  
UNIQUE ( column-list ) [conflict-clause] |  
CHECK ( expr )  
conflict-clause     ::=  ON CONFLICT conflict-algorithm  
conflict-algorithm  ::=  ROLLBACK | ABORT | FAIL | IGNORE | REPLACE  
default-value       :=  NULL | string | number | CURRENT_TIME | CURRENT_DATE | CURRENT_TIMESTAMP  
sort-order          ::=  ASC | DESC  
collation-name      ::=  BINARY | NOCASE  
column-list         ::=  column-name [, column-name]*
Each column definition is the name of the column followed by the data type for that column, then one or more optional 
column constraints. The data type for the column restricts what data may be stored in that column. If an attempt is 
made to store a value in a column with a different data type, the runtime converts the value to the appropriate type if 
possible, or raises an error. See the Data type support section for additional information.
The NOT NULL column constraint indicates that the column cannot contain NULL values.
A UNIQUE constraint causes an index to be created on the specified column or columns. This index must contain 
unique keys—no two rows may contain duplicate values or combinations of values for the specified column or 
columns. A CREATE TABLE statement can have multiple UNIQUE constraints, including multiple columns with a 
UNIQUE constraint in the column's definition and/or multiple table-level UNIQUE constraints.
A CHECK constraint defines an expression that is evaluated and must be true in order for a row's data to be inserted 
or updated. The CHECK expression must resolve to a boolean value.
A COLLATE clause in a column definition specifies what text collation function to use when comparing text entries 
for the column. The BINARY collating function is used by default. For details on the COLLATE clause and collation 
functions, see COLLATE.
The DEFAULT constraint specifies a default value to use when doing an INSERT. The value may be NULL, a string 
constant, or a number. The default value may also be one of the special case-independent keywords CURRENT_TIME, 
CURRENT_DATE or CURRENT_TIMESTAMP. If the value is NULL, a string constant, or a number, it is literally 
inserted into the column whenever an INSERT statement does not specify a value for the column. If the value is 
CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP, then the current UTC date and/or time is 
inserted into the column. For CURRENT_TIME, the format is HH:MM:SS. For CURRENT_DATE, the format is 
YYYY-MM-DD. The format for CURRENT_TIMESTAMP is YYYY-MM-DD HH:MM:SS.
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Guide VB.NET Programmers How to Add Images in PDF Document Using XDoc.PDF SDK for VB.NET.
bookmarks in pdf; export pdf bookmarks to text file
C# PDF Password Library: add, remove, edit PDF file password in C#
C# Sample Code: Add Password to PDF with Permission Settings Applied in C#.NET. This example shows how to add PDF file password with access permission setting.
excel pdf bookmarks; convert word to pdf with bookmarks
347
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
Specifying a PRIMARY KEY normally just creates a UNIQUE index on the corresponding column or columns. 
However, if the PRIMARY KEY constraint is on a single column that has the data type INTEGER (or one of its 
synonyms such as int) then that column is used by the database as the actual primary key for the table. This means that 
the column may only hold unique integer values. (Note that in many SQLite implementations, only the column type 
INTEGER causes the column to serve as the internal primary key, but in Adobe AIR synonyms for INTEGER such as 
int also specify that behavior.)
If a table does not have an INTEGER PRIMARY KEY column, an integer key is automatically generated when a row 
is inserted. The primary key for a row can always be accessed using one of the special names ROWID, OID, or 
_ROWID_. These names can be used regardless of whether it is an explicitly declared INTEGER PRIMARY KEY or 
an internal generated value. However, if the table has an explicit INTEGER PRIMARY KEY, the name of the column 
in the result data is the actual column name rather than the special name.
An INTEGER PRIMARY KEY column can also include the keyword AUTOINCREMENT. When the 
AUTOINCREMENT keyword is used, the database automatically generates and inserts a sequentially incremented 
integer key in the INTEGER PRIMARY KEY column when it executes an INSERT statement that doesn't specify an 
explicit value for the column.
There can only be one PRIMARY KEY constraint in a CREATE TABLE statement. It can either be part of one column's 
definition or one single table-level PRIMARY KEY constraint. A primary key column is implicitly NOT NULL.
The optional conflict-clause following many constraints allows the specification of an alternative default constraint 
conflict resolution algorithm for that constraint. The default is ABORT. Different constraints within the same table 
may have different default conflict resolution algorithms. If an INSERT or UPDATE statement specifies a different 
conflict resolution algorithm, that algorithm is used in place of the algorithm specified in the CREATE TABLE 
statement. See the ON CONFLICT section of “Special statements and clauses on page  351 for additional information.
Additional constraints, such as FOREIGN KEY constraints, do not result in an error but the runtime ignores them.
If the TEMP or TEMPORARY keyword occurs between CREATE and TABLE then the table that is created is only 
visible within the same database connection (SQLConnection instance). It is automatically deleted when the database 
connection is closed. Any indices created on a temporary table are also temporary. Temporary tables and indices are 
stored in a separate file distinct from the main database file.
If the optional database-name prefix is specified, then the table is created in a named database (a database that was 
connected to the SQLConnection instance by calling the attach() method with the specified database name). It is an 
error to specify both a database-name prefix and the TEMP keyword, unless the database-name prefix is temp. If no 
database name is specified, and the TEMP keyword is not present, the table is created in the main database (the 
database that was connected to the SQLConnection instance using the open() or openAsync()method).
There are no arbitrary limits on the number of columns or on the number of constraints in a table. There is also no 
arbitrary limit on the amount of data in a row.
The CREATE TABLE AS form defines the table as the result set of a query. The names of the table columns are the 
names of the columns in the result.
If the optional IF NOT EXISTS clause is present and another table with the same name already exists, then the database 
ignores the CREATE TABLE command.
A table can be removed using the DROP TABLE statement, and limited changes can be made using the ALTER TABLE 
statement.
ALTER TABLE 
The ALTER TABLE command allows the user to rename or add a new column to an existing table. It is not possible 
to remove a column from a table.
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
create pdf bookmarks from word; how to bookmark a pdf in reader
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
excel print to pdf with bookmarks; how to bookmark a pdf page
348
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
sql-statement ::= ALTER TABLE [database-name.] table-name alteration  
alteration    ::= RENAME TO new-table-name  
alteration    ::= ADD [COLUMN] column-def
The RENAME TO syntax is used to rename the table identified by [database-name.] table-name to new-table-name. 
This command cannot be used to move a table between attached databases, only to rename a table within the same 
database.
If the table being renamed has triggers or indices, then they remain attached to the table after it has been renamed. 
However, if there are any view definitions or statements executed by triggers that refer to the table being renamed, they 
are not automatically modified to use the new table name. If a renamed table has associated views or triggers, you must 
manually drop and recreate the triggers or view definitions using the new table name.
The ADD [COLUMN] syntax is used to add a new column to an existing table. The new column is always appended 
to the end of the list of existing columns. The column-def clause may take any of the forms permissible in a CREATE 
TABLE statement, with the following restrictions:
• The column may not have a PRIMARY KEY or UNIQUE constraint. 
• The column may not have a default value of CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP. 
• If a NOT NULL constraint is specified, the column must have a default value other than NULL. 
The execution time of the ALTER TABLE statement is not affected by the amount of data in the table.
DROP TABLE
The DROP TABLE statement removes a table added with a CREATE TABLE statement. The table with the specified 
table-name is the table that's dropped. It is completely removed from the database and the disk file. The table cannot 
be recovered. All indices associated with the table are also deleted.
sql-statement  ::=  DROP TABLE [IF EXISTS] [database-name.] table-name
By default the DROP TABLE statement does not reduce the size of the database file. Empty space in the database is 
retained and used in subsequent INSERT operations. To remove free space in the database use the 
SQLConnection.clean() method. If the autoClean parameter is set to true when the database is initially created, the 
space is freed automatically.
The optional IF EXISTS clause suppresses the error that would normally result if the table does not exist.
CREATE INDEX
The CREATE INDEX command consists of the keywords CREATE INDEX followed by the name of the new index, 
the keyword ON, the name of a previously created table that is to be indexed, and a parenthesized list of names of 
columns in the table whose values are used for the index key.
sql-statement  ::=  CREATE [UNIQUE] INDEX [IF NOT EXISTS] [database-name.] index-name  
ON table-name ( column-name [, column-name]* )  
column-name    ::=  name [COLLATE collation-name] [ASC | DESC]
Each column name can be followed by ASC or DESC keywords to indicate sort order, but the sort order designation 
is ignored by the runtime. Sorting is always done in ascending order.
The COLLATE clause following each column name defines a collating sequence used for text values in that column. 
The default collation sequence is the collation sequence defined for that column in the CREATE TABLE statement. If 
no collation sequence is specified, the BINARY collation sequence is used. For a definition of the COLLATE clause 
and collation functions see COLLATE.
There are no arbitrary limits on the number of indices that can be attached to a single table. There are also no limits 
on the number of columns in an index.
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
bookmark a pdf file; export excel to pdf with bookmarks
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
to PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Redact Pages. Annotation & Drawing. Add Sticky Note
how to bookmark a pdf document; create pdf bookmarks
349
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
DROP INDEX
The drop index statement removes an index added with the CREATE INDEX statement. The specified index is 
completely removed from the database file. The only way to recover the index is to reenter the appropriate CREATE 
INDEX command.
sql-statement ::= DROP INDEX [IF EXISTS] [database-name.] index-name
By default the DROP INDEX statement does not reduce the size of the database file. Empty space in the database is 
retained and used in subsequent INSERT operations. To remove free space in the database use the 
SQLConnection.clean() method. If the autoClean parameter is set to true when the database is initially created, the 
space is freed automatically.
CREATE VIEW
The CREATE VIEW command assigns a name to a pre-defined SELECT statement. This new name can then be used 
in a FROM clause of another SELECT statement in place of a table name. Views are commonly used to simplify queries 
by combining a complex (and frequently used) set of data into a structure that can be used in other operations.
sql-statement ::= CREATE [TEMP | TEMPORARY] VIEW [IF NOT EXISTS] [database-name.] view-name AS 
select-statement
If the TEMP or TEMPORARY keyword occurs in between CREATE and VIEW then the view that is created is only 
visible to the SQLConnection instance that opened the database and is automatically deleted when the database is 
closed.
If a [database-name] is specified the view is created in the named database (a database that was connected to the 
SQLConnection instance using the attach() method, with the specified name argument. It is an error to specify both a 
[database-name] and the TEMP keyword unless the [database-name] is temp. If no database name is specified, and the 
TEMP keyword is not present, the view is created in the main database (the database that was connected to the 
SQLConnection instance using the open() or openAsync() method).
Views are read only. A DELETE, INSERT, or UPDATE statement cannot be used on a view, unless at least one trigger 
of the associated type (INSTEAD OF DELETE, INSTEAD OF INSERT, INSTEAD OF UPDATE) is defined. For 
information on creating a trigger for a view, see CREATE TRIGGER.
A view is removed from a database using the DROP VIEW statement.
DROP VIEW
The DROP VIEW statement removes a view created by a CREATE VIEW statement.
sql-statement ::= DROP VIEW [IF EXISTS] view-name
The specified view-name is the name of the view to drop. It is removed from the database, but no data in the underlying 
tables is modified.
CREATE TRIGGER
The create trigger statement is used to add triggers to the database schema. A trigger is a database operation (the 
trigger-action) that is automatically performed when a specified database event (the database-event) occurs.
C# PDF Library SDK to view, edit, convert, process PDF file for C#
editing PDF document hyperlink (url) and quick navigation link in PDF bookmark. C#.NET: Edit PDF Metadata. PDF SDK for .NET allows you to read, add, edit, update
bookmark page in pdf; auto bookmark pdf
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
framework. Support to add flatten comments to PDF document online in ASPX webpage. Support C#.NET: Add Text to PDF Document. This page
pdf export bookmarks; export bookmarks from pdf to excel
350
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
sql-statement   ::=  CREATE [TEMP | TEMPORARY] TRIGGER [IF NOT EXISTS] [database-name.] trigger-
name  
[BEFORE | AFTER] database-event  
ON table-name  
trigger-action  
sql-statement   ::=  CREATE [TEMP | TEMPORARY] TRIGGER [IF NOT EXISTS] [database-name.] trigger-
name  
INSTEAD OF database-event  
ON view-name  
trigger-action  
database-event  ::=  DELETE |  
INSERT |  
UPDATE |  
UPDATE OF column-list  
trigger-action  ::=  [FOR EACH ROW] [WHEN expr]  
BEGIN  
trigger-step ;  
[ trigger-step ; ]*  
END  
trigger-step    ::=  update-statement |  
insert-statement |  
delete-statement |  
select-statement  
column-list     ::=  column-name [, column-name]*
A trigger is specified to fire whenever a DELETE, INSERT, or UPDATE of a particular database table occurs, or 
whenever an UPDATE of one or more specified columns of a table are updated. Triggers are permanent unless the 
TEMP or TEMPORARY keyword is used. In that case the trigger is removed when the SQLConnection instance's main 
database connection is closed. If no timing is specified (BEFORE or AFTER) the trigger defaults to BEFORE.
Only FOR EACH ROW triggers are supported, so the FOR EACH ROW text is optional. With a FOR EACH ROW 
trigger, the trigger-step statements are executed for each database row being inserted, updated or deleted by the 
statement causing the trigger to fire, if the WHEN clause expression evaluates to true.
If a WHEN clause is supplied, the SQL statements specified as trigger-steps are only executed for rows for which the 
WHEN clause is true. If no WHEN clause is supplied, the SQL statements are executed for all rows.
Within the body of a trigger, (the trigger-action clause) the pre-change and post-change values of the affected table are 
available using the special table names OLD and NEW. The structure of the OLD and NEW tables matches the 
structure of the table on which the trigger is created. The OLD table contains any rows that are modified or deleted by 
the triggering statement, in their state before the triggering statement's operations. The NEW table contains any rows 
that are modified or created by the triggering statement, in their state after the triggering statement's operations. Both 
the WHEN clause and the trigger-step statements can access values from the row being inserted, deleted or updated 
using references of the form NEW.column-name and OLD.column-name, where column-name is the name of a 
column from the table with which the trigger is associated. The availability of the OLD and NEW table references 
depends on the type of database-event the trigger handles:
• INSERT – NEW references are valid 
• UPDATE – NEW and OLD references are valid 
• DELETE – OLD references are valid 
The specified timing (BEFORE, AFTER, or INSTEAD OF) determines when the trigger-step statements are executed 
relative to the insertion, modification or removal of the associated row. An ON CONFLICT clause may be specified as 
part of an UPDATE or INSERT statement in a trigger-step. However, if an ON CONFLICT clause is specified as part 
of the statement causing the trigger to fire, then that conflict handling policy is used instead.
351
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
In addition to table triggers, an INSTEAD OF trigger can be created on a view. If one or more INSTEAD OF INSERT, 
INSTEAD OF DELETE, or INSTEAD OF UPDATE triggers are defined on a view, it is not considered an error to 
execute the associated type of statement (INSERT, DELETE, or UPDATE) on the view. In that case, executing an 
INSERT, DELETE or UPDATE on the view causes the associated triggers to fire. Because the trigger is an INSTEAD 
OF trigger, the tables underlying the view are not modified by the statement that causes the trigger to fire. However, 
the triggers can be used to perform modifying operations on the underlying tables.
There is an important issue to keep in mind when creating a trigger on a table with an INTEGER PRIMARY KEY 
column. If a BEFORE trigger modifies the INTEGER PRIMARY KEY column of a row that is to be updated by the 
statement that causes the trigger to fire, the update doesn't occur. A workaround is to create the table with a PRIMARY 
KEY column instead of an INTEGER PRIMARY KEY column.
A trigger can be removed using the DROP TRIGGER statement. When a table or view is dropped, all triggers 
associated with that table or view are automatically dropped as well.
RAISE () function
A special SQL function RAISE() can be used in a trigger-step statement of a trigger. This function has the following 
syntax:
raise-function  ::=  RAISE ( ABORT, error-message ) |  
RAISE ( FAIL, error-message ) |  
RAISE ( ROLLBACK, error-message ) |  
RAISE ( IGNORE )
When one of the first three forms is called during trigger execution, the specified ON CONFLICT processing action 
(ABORT, FAIL, or ROLLBACK) is performed and the current statement's execution ends. The ROLLBACK is 
considered a statement execution failure, so the SQLStatement instance whose execute() method was being carried out 
dispatches an error (SQLErrorEvent.ERROR) event. The SQLError object in the dispatched event object's error 
property has its details property set to the error-message specified in the RAISE() function.
When RAISE(IGNORE) is called, the remainder of the current trigger, the statement that caused the trigger to execute, 
and any subsequent triggers that would have been executed are abandoned. No database changes are rolled back. If the 
statement that caused the trigger to execute is itself part of a trigger, that trigger program resumes execution at the 
beginning of the next step. For more information about the conflict resolution algorithms, see the section ON 
CONFLICT (conflict algorithms).
DROP TRIGGER
The DROP TRIGGER statement removes a trigger created by the CREATE TRIGGER statement.
sql-statement  ::=  DROP TRIGGER [IF EXISTS] [database-name.] trigger-name
The trigger is deleted from the database. Note that triggers are automatically dropped when their associated table is 
dropped.
Special statements and clauses
This section describes several clauses that are extensions to SQL provided by the runtime, as well as two language 
elements that can be used in many statements, comments and expressions. 
COLLATE
The COLLATE clause is used in SELECT, CREATE TABLE, and CREATE INDEX statements to specify the 
comparison algorithm that is used when comparing or sorting values.
352
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
sql-statement   ::=  COLLATE collation-name  
collation-name  ::=  BINARY | NOCASE
The default collation type for columns is BINARY. When BINARY collation is used with values of the TEXT storage 
class, binary collation is performed by comparing the bytes in memory that represent the value regardless of the text 
encoding.
The NOCASE collation sequence is only applied for values of the TEXT storage class. When used, the NOCASE 
collation performs a case-insensitive comparison.
No collation sequence is used for storage classes of type NULL, BLOB, INTEGER, or REAL.
To use a collation type other than BINARY with a column, a COLLATE clause must be specified as part of the column 
definition in the CREATE TABLE statement. Whenever two TEXT values are compared, a collation sequence is used 
to determine the results of the comparison according to the following rules:
• For binary comparison operators, if either operand is a column, then the default collation type of the column 
determines the collation sequence that is used for the comparison. If both operands are columns, then the collation 
type for the left operand determines the collation sequence used. If neither operand is a column, then the BINARY 
collation sequence is used.
• The BETWEEN...AND operator is equivalent to using two expressions with the >= and <= operators. For example, 
the expression x BETWEEN y AND z is equivalent to x >= y AND x <= z. Consequently, the BETWEEN...AND 
operator follows the preceding rule to determine the collation sequence.
• The IN operator behaves like the =operator for the purposes of determining the collation sequence to use. For 
example, the collation sequence used for the expressionx IN (y, z) is the default collation type of x if x is a column. 
Otherwise, BINARY collation is used.
• An ORDER BY clause that is part of a SELECT statement may be explicitly assigned a collation sequence to be used 
for the sort operation. In that case the explicit collation sequence is always used. Otherwise, if the expression sorted 
by an ORDER BYclause is a column, the default collation type of the column is used to determine sort order. If the 
expression is not a column, the BINARY collation sequence is used.
EXPLAIN
The EXPLAIN command modifier is a non-standard extension to SQL.
sql-statement  ::=  EXPLAIN sql-statement
If the EXPLAIN keyword appears before any other SQL statement, then instead of actually executing the command, 
the result reports the sequence of virtual machine instructions it would have used to execute the command, had the 
EXPLAIN keyword not been present. The EXPLAIN feature is an advanced feature and allows developers to change 
SQL statement text in an attempt to optimize performance or debug a statement that doesn't appear to be working 
properly.
ON CONFLICT (conflict algorithms)
The ON CONFLICT clause is not a separate SQL command. It is a non-standard clause that can appear in many other 
SQL commands.
conflict-clause     ::=  ON CONFLICT conflict-algorithm  
conflict-clause     ::=  OR conflict-algorithm  
conflict-algorithm  ::=  ROLLBACK |  
ABORT |  
FAIL |  
IGNORE |  
REPLACE
353
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
The first form of the ON CONFLICT clause, using the keywords ON CONFLICT, is used in a CREATE TABLE 
statement. For an INSERT or UPDATE statement, the second form is used, with ON CONFLICT replaced by OR to 
make the syntax seem more natural. For example, instead of INSERT ON CONFLICT IGNORE, the statement becomes 
INSERT OR IGNORE. Although the keywords are different, the meaning of the clause is the same in either form.
The ON CONFLICT clause specifies the algorithm that is used to resolve constraint conflicts. The five algorithms are 
ROLLBACK, ABORT, FAIL, IGNORE, and REPLACE. The default algorithm is ABORT. The following is an 
explanation of the five conflict algorithms:
ROLLBACK 
When a constraint violation occurs, an immediate ROLLBACK occurs, ending the current transaction. 
The command aborts and the SQLStatement instance dispatches an error event. If no transaction is active (other than 
the implied transaction that is created on every command) then this algorithm works the same as ABORT. 
ABORT 
When a constraint violation occurs, the command backs out any prior changes it might have made and the 
SQLStatement instance dispatches an error event. No ROLLBACK is executed, so changes from prior commands 
within a transaction are preserved. ABORT is the default behavior. 
FAIL 
When a constraint violation occurs, the command aborts and the SQLStatement dispatches an error event. 
However, any changes to the database that the statement made before encountering the constraint violation are 
preserved and are not backed out. For example, if an UPDATE statement encounters a constraint violation on the 
100th row that it attempts to update, then the first 99 row changes are preserved but changes to rows 100 and beyond 
don’t occur.
IGNORE 
When a constraint violation occurs, the one row that contains the constraint violation is not inserted or 
changed. Aside from this row being ignored, the command continues executing normally. Other rows before and after 
the row that contained the constraint violation continue to be inserted or updated normally. No error is returned.
REPLACE 
When a UNIQUE constraint violation occurs, the pre-existing rows that are causing the constraint violation 
are removed before inserting or updating the current row. Consequently, the insert or update always occurs, and the 
command continues executing normally. No error is returned. If a NOT NULL constraint violation occurs, the NULL 
value is replaced by the default value for that column. If the column has no default value, then the ABORT algorithm 
is used. If a CHECK constraint violation occurs then the IGNORE algorithm is used. When this conflict resolution 
strategy deletes rows in order to satisfy a constraint, it does not invoke delete triggers on those rows. 
The algorithm specified in the OR clause of an INSERT or UPDATE statement overrides any algorithm specified in a 
CREATE TABLE statement. If no algorithm is specified in the CREATE TABLE statement or the executing INSERT 
or UPDATE statement, the ABORT algorithm is used.
REINDEX
The REINDEX command is used to delete and re-create one or more indices. This command is useful when the 
definition of a collation sequence has changed.
sql-statement  ::=  REINDEX collation-name  
sql-statement  ::=  REINDEX [database-name .] ( table-name | index-name )
In the first form, all indices in all attached databases that use the named collation sequence are recreated. In the second 
form, when a table-name is specified, all indices associated with the table are rebuilt. If an index-name is given, only 
the specified index is deleted and recreated.
COMMENTS
Comments aren't SQL commands, but they can occur in SQL queries. They are treated as white space by the runtime. 
They can begin anywhere white space can be found, including inside expressions that span multiple lines.
354
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
SQL support in local databases
Last updated 9/28/2011
comment             ::=  single-line-comment |  
block-comment  
single-line-comment ::=  -- single-line  
block-comment       ::=  /* multiple-lines or block [*/]
A single-line comment is indicated by two dashes. A single line comment only extends to the end of the current line.
Block comments can span any number of lines, or be embedded within a single line. If there is no terminating 
delimiter, a block comment extends to the end of the input. This situation is not treated as an error. A new SQL 
statement can begin on a line after a block comment ends. Block comments can be embedded anywhere white space 
can occur, including inside expressions, and in the middle of other SQL statements. Block comments do not nest. 
Single-line comments inside a block comment are ignored.
EXPRESSIONS
Expressions are subcommands within other SQL blocks. The following describes the valid syntax for an expression 
within a SQL statement:
expr            ::=  expr binary-op expr |  
expr [NOT] like-op expr [ESCAPE expr] |  
unary-op expr |  
( expr ) |  
column-name |  
table-name.column-name |  
database-name.table-name.column-name |  
literal-value |  
parameter |  
function-name( expr-list | * ) |  
expr ISNULL |  
expr NOTNULL |  
expr [NOT] BETWEEN expr AND expr |  
expr [NOT] IN ( value-list ) |  
expr [NOT] IN ( select-statement ) |  
expr [NOT] IN [database-name.] table-name |  
[EXISTS] ( select-statement ) |  
CASE [expr] ( WHEN expr THEN expr )+ [ELSE expr] END |  
CAST ( expr AS type ) |  
expr COLLATE collation-name  
like-op         ::=  LIKE | GLOB  
binary-op       ::=  see Operators  
unary-op        ::=  see Operators  
parameter       ::=  :param-name | @param-name | ?  
value-list      ::=  literal-value [, literal-value]*  
literal-value   ::=  literal-string | literal-number | literal-boolean | literal-blob | 
literal-null  
literal-string  ::=  'string value'  
literal-number  ::=  integer | number  
literal-boolean  ::=  true | false  
literal-blob  ::=  X'string of hexadecimal data'  
literal-null  ::=  NULL
An expression is any combination of values and operators that can be resolved to a single value. Expressions can be 
divided into two general types, according to whether they resolve to a boolean (true or false) value or whether they 
resolve to a non-boolean value.
Documents you may be interested
Documents you may be interested