package SQL::Translator::Parser::SQLServer;
# -------------------------------------------------------------------
-# $Id: SQLServer.pm,v 1.1 2005-06-27 19:01:31 duality72 Exp $
+# $Id: SQLServer.pm,v 1.4 2006-05-04 20:47:07 duality72 Exp $
# -------------------------------------------------------------------
# Copyright (C) 2002-4 SQLFairy Authors
#
use strict;
use vars qw[ $DEBUG $VERSION $GRAMMAR @EXPORT_OK ];
-$VERSION = sprintf "%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/;
+$VERSION = sprintf "%d.%02d", q$Revision: 1.4 $ =~ /(\d+)\.(\d+)/;
$DEBUG = 0 unless defined $DEBUG;
use Data::Dumper;
size => $item{'data_type'}{'size'},
nullable => $nullable,
default => $qualifiers{'default_val'},
- is_auto_inc => $qualifiers{'auto_inc'},
+ is_auto_inc => $qualifiers{'is_auto_inc'},
# is_primary_key => $item{'primary_key'}[0],
}
}
| /null/i
{ $return = 1 }
-default_val : /default/i /(?:')?[^']*(?:')?/
+default_val : /default/i /null/i
+ { $return = 'null' }
+ | /default/i /'[^']*'/
{ $item[2]=~ s/'//g; $return = $item[2] }
auto_inc : /identity/i { 1 }
}
}
-foreign_key_constraint : /constraint/i index_name(?) /foreign/i /key/i parens_field_list /references/i table_name parens_field_list(?) on_delete_do(?) on_update_do(?)
+foreign_key_constraint : /constraint/i index_name(?) /foreign/i /key/i parens_field_list /references/i table_name parens_field_list(?) on_delete(?) on_update(?)
{
$return = {
supertype => 'constraint',
fields => $item[5],
reference_table => $item[7],
reference_fields => $item[8][0],
- on_delete_do => $item[9][0],
- on_update_do => $item[10][0],
+ on_delete => $item[9][0],
+ on_update => $item[10][0],
}
}
}
}
-on_delete_do : /on delete/i reference_option
+on_delete : /on delete/i reference_option
{ $item[2] }
-on_update_do : /on update/i reference_option
+on_update : /on update/i reference_option
{ $item[2] }
reference_option: /cascade/i |
reference_table => $cdata->{'reference_table'},
reference_fields => $cdata->{'reference_fields'},
match_type => $cdata->{'match_type'} || '',
- on_delete => $cdata->{'on_delete_do'},
- on_update => $cdata->{'on_update_do'},
+ on_delete => $cdata->{'on_delete'} || $cdata->{'on_delete_do'},
+ on_update => $cdata->{'on_update'} || $cdata->{'on_update_do'},
) or die $table->error;
}
}