X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FSQLite.pm;fp=lib%2FSQL%2FTranslator%2FParser%2FSQLite.pm;h=259c0cf14a58ff88dd8c6bce8c6cbb5a1c3b6801;hb=ea4a3ecc5de1c8f062fef3bab51e1cc7a2c23235;hp=95c1814e254f74a3f2e1badb4821f4096a0fcf6e;hpb=51c4e3824e8ba2e75e130ad09f40c4d1ccbc95ea;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Parser/SQLite.pm b/lib/SQL/Translator/Parser/SQLite.pm index 95c1814..259c0cf 100644 --- a/lib/SQL/Translator/Parser/SQLite.pm +++ b/lib/SQL/Translator/Parser/SQLite.pm @@ -360,12 +360,14 @@ column_constraint : NOT_NULL conflict_clause(?) } } | - REFERENCES ref_def + REFERENCES ref_def cascade_def(?) { $return = { type => 'foreign_key', reference_table => $item[2]{'reference_table'}, reference_fields => $item[2]{'reference_fields'}, + on_delete => $item[3][0]{'on_delete'}, + on_update => $item[3][0]{'on_update'}, } } | @@ -423,7 +425,7 @@ table_constraint : PRIMARY_KEY parens_field_list conflict_clause(?) } } | - FOREIGN_KEY parens_field_list REFERENCES ref_def + FOREIGN_KEY parens_field_list REFERENCES ref_def cascade_def(?) { $return = { supertype => 'constraint', @@ -431,12 +433,26 @@ table_constraint : PRIMARY_KEY parens_field_list conflict_clause(?) fields => $item[2], reference_table => $item[4]{'reference_table'}, reference_fields => $item[4]{'reference_fields'}, + on_delete => $item[5][0]{'on_delete'}, + on_update => $item[5][0]{'on_update'}, } } ref_def : table_name parens_field_list { $return = { reference_table => $item[1]{name}, reference_fields => $item[2] } } +cascade_def : cascade_update_def cascade_delete_def(?) + { $return = { on_update => $item[1], on_delete => $item[2][0] } } + | + cascade_delete_def cascade_update_def(?) + { $return = { on_delete => $item[1], on_update => $item[2][0] } } + +cascade_delete_def : /on\s+delete\s+(\w+)/i + { $return = $1} + +cascade_update_def : /on\s+update\s+(\w+)/i + { $return = $1} + table_name : qualified_name qualified_name : NAME