NAME

SQL::Translator::Parser::SQLite - parser for SQLite

SYNOPSIS

use SQL::Translator;
use SQL::Translator::Parser::SQLite;

my $translator = SQL::Translator->new;
$translator->parser("SQL::Translator::Parser::SQLite");

DESCRIPTION

This is a grammar for parsing CREATE statements for SQLite as described here:

http://www.sqlite.org/lang.html

CREATE INDEX

sql-statement ::= CREATE [TEMP | TEMPORARY] [UNIQUE] INDEX index-name ON [database-name .] table-name ( column-name [, column-name]* ) [ ON CONFLICT conflict-algorithm ]

column-name ::= name [ ASC | DESC ]

CREATE TABLE

sql-command ::= CREATE [TEMP | TEMPORARY] TABLE table-name ( column-def [, column-def]* [, constraint]* )

sql-command ::= CREATE [TEMP | TEMPORARY] TABLE 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 ] | UNIQUE [ conflict-clause ] | CHECK ( expr ) [ conflict-clause ] | DEFAULT value

constraint ::= PRIMARY KEY ( name [, name]* ) [ conflict-clause ]| UNIQUE ( name [, name]* ) [ conflict-clause ] | CHECK ( expr ) [ conflict-clause ]

conflict-clause ::= ON CONFLICT conflict-algorithm

CREATE TRIGGER

sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ] database-event ON [database-name .] table-name trigger-action

sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name INSTEAD OF database-event ON [database-name .] view-name trigger-action

database-event ::= DELETE | INSERT | UPDATE | UPDATE OF column-list

trigger-action ::= [ FOR EACH ROW | FOR EACH STATEMENT ] [ WHEN expression ] BEGIN trigger-step ; [ trigger-step ; ]* END

trigger-step ::= update-statement | insert-statement | delete-statement | select-statement

CREATE VIEW

sql-command ::= CREATE [TEMP | TEMPORARY] VIEW view-name AS select-statement

ON CONFLICT clause

conflict-clause ::=
ON CONFLICT conflict-algorithm

conflict-algorithm ::=
ROLLBACK | ABORT | FAIL | IGNORE | REPLACE

expression

expr ::= expr binary-op expr | expr like-op expr | unary-op expr | ( expr ) | column-name | table-name . column-name | database-name . table-name . column-name | literal-value | function-name ( expr-list | * ) | expr (+) | expr ISNULL | expr NOTNULL | expr [NOT] BETWEEN expr AND expr | expr [NOT] IN ( value-list ) | expr [NOT] IN ( select-statement ) | ( select-statement ) | CASE [expr] ( WHEN expr THEN expr )+ [ELSE expr] END

like-op::= LIKE | GLOB | NOT LIKE | NOT GLOB

AUTHOR

Ken Y. Clark <kclark@cpan.org>.

SEE ALSO

perl(1), Parse::RecDescent, SQL::Translator::Schema.