/// <summary> /// SQL-92, page 274<br/> /// Note that item 9 on page 276 specifies that if ON DELETE clause is omitted, DB should act as if "NO ACTION" is implicitly stated<br/> /// Also, Oracle violates SQL-92 by not supporting explicit ON DELETE NO ACTION clause /// </summary> private string _DeleteRule(ForeignKeyConstraint.ReferentialAction onDelete) { if (onDelete == ForeignKeyConstraint.ReferentialAction.NoAction) { return(""); } return(string.Format( "ON DELETE {0}", _ReferentialAction(onDelete) )); }
private static string GetStringRepresentation(ForeignKeyConstraint.ReferentialAction action) { switch (action) { case ForeignKeyConstraint.ReferentialAction.NoAction: return("NO ACTION"); case ForeignKeyConstraint.ReferentialAction.Cascade: return("CASCADE"); case ForeignKeyConstraint.ReferentialAction.SetNull: return("SET NULL"); case ForeignKeyConstraint.ReferentialAction.SetDefault: return("SET DEFAULT"); default: throw new ApplicationException("Unknown referential action"); } }
private static string GetStringRepresentation(ForeignKeyConstraint.ReferentialAction action) { switch (action) { case ForeignKeyConstraint.ReferentialAction.NoAction: return("a"); case ForeignKeyConstraint.ReferentialAction.Cascade: return("c"); case ForeignKeyConstraint.ReferentialAction.SetNull: return("n"); case ForeignKeyConstraint.ReferentialAction.SetDefault: return("d"); case ForeignKeyConstraint.ReferentialAction.Restrict: return("r"); default: throw new ApplicationException("Unknown referential action"); } }
/// <summary> /// SQL-92, page 274 /// SQL:1999 added a support for ON DELETE RESTRICT, and both Postgres and Oracle support it in their current versions /// </summary> private static string _ReferentialAction(ForeignKeyConstraint.ReferentialAction action) { switch (action) { case ForeignKeyConstraint.ReferentialAction.NoAction: return("NO ACTION"); case ForeignKeyConstraint.ReferentialAction.Cascade: return("CASCADE"); case ForeignKeyConstraint.ReferentialAction.SetNull: return("SET NULL"); case ForeignKeyConstraint.ReferentialAction.SetDefault: return("SET DEFAULT"); case ForeignKeyConstraint.ReferentialAction.Restrict: return("RESTRICT"); default: throw new ApplicationException(string.Format("Unknown action {0}", action)); } }