visitForeignKeyClause method
Implementation
@override
void visitForeignKeyClause(ForeignKeyClause e, void arg) {
keyword(TokenType.references);
visit(e.foreignTable, arg);
if (e.columnNames.isNotEmpty) {
symbol('(');
_join(e.columnNames, ',');
symbol(')');
}
void referenceAction(ReferenceAction action) {
switch (action) {
case ReferenceAction.setNull:
keyword(TokenType.set);
keyword(TokenType.$null);
break;
case ReferenceAction.setDefault:
keyword(TokenType.set);
keyword(TokenType.$default);
break;
case ReferenceAction.cascade:
keyword(TokenType.cascade);
break;
case ReferenceAction.restrict:
keyword(TokenType.restrict);
break;
case ReferenceAction.noAction:
keyword(TokenType.no);
keyword(TokenType.action);
break;
}
}
if (e.onUpdate != null) {
keyword(TokenType.on);
keyword(TokenType.update);
referenceAction(e.onUpdate!);
}
if (e.onDelete != null) {
keyword(TokenType.on);
keyword(TokenType.delete);
referenceAction(e.onDelete!);
}
visitNullable(e.deferrable, arg);
}