mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-22 06:54:07 +00:00
Add referential actions to TableConstraint foreign key (#306)
* Add referential actions to TableConstraint foreign key * Remove copy/paste error * Add referential actions to TableConstraint foreign key * Add additional tests
This commit is contained in:
parent
f56e57470e
commit
a95c81fb13
3 changed files with 99 additions and 12 deletions
|
@ -1741,11 +1741,26 @@ impl<'a> Parser<'a> {
|
|||
self.expect_keyword(Keyword::REFERENCES)?;
|
||||
let foreign_table = self.parse_object_name()?;
|
||||
let referred_columns = self.parse_parenthesized_column_list(Mandatory)?;
|
||||
let mut on_delete = None;
|
||||
let mut on_update = None;
|
||||
loop {
|
||||
if on_delete.is_none() && self.parse_keywords(&[Keyword::ON, Keyword::DELETE]) {
|
||||
on_delete = Some(self.parse_referential_action()?);
|
||||
} else if on_update.is_none()
|
||||
&& self.parse_keywords(&[Keyword::ON, Keyword::UPDATE])
|
||||
{
|
||||
on_update = Some(self.parse_referential_action()?);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Ok(Some(TableConstraint::ForeignKey {
|
||||
name,
|
||||
columns,
|
||||
foreign_table,
|
||||
referred_columns,
|
||||
on_delete,
|
||||
on_update,
|
||||
}))
|
||||
}
|
||||
Token::Word(w) if w.keyword == Keyword::CHECK => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue