public override void WriteToStream(IndentStream stream) { stream.Write("CONSTRAINT "); ConstraintName.WriteToStream(stream); stream.Write($" "); KeyType.WriteToStream(stream); if (ClusterExpr != null) { stream.Write(" "); ClusterExpr.WriteToStream(stream); } if (WithExpr != null) { stream.Write(" "); WithExpr.WriteToStream(stream); } if (OnPrimary != null) { stream.Write(" "); OnPrimary.WriteToStream(stream); } }
public DataRow FillRow(int parentID, DataRow dr) { dr["id"] = dr.Table.Rows.Count; dr["parent_id"] = parentID; dr["table_name"] = TableName.ToLower(); dr["constraint_name"] = ConstraintName.ToLower(); dr["references_table_name"] = ReferencesTableName.ToLower(); dr["on_delete_action"] = OnDeleteAction; dr["on_update_action"] = OnUpdateAction; return(dr); }
public string getScript() { return(string.Format( "ALTER TABLE {0} ADD CONSTRAINT {1} FOREIGN KEY ({2}) REFERENCES {3} ({4})", new string[] { TableName.ToUpper(), ConstraintName.ToUpper(), ColumnName.ToUpper(), TableReference.ToUpper(), ColumnReference.ToUpper() })); }
public void ShouldReturnPrimaryKeyConstraintNameForConstraintNameClassTestFixture() { var schemaName = "schemaName"; var tableName = "tableName"; string[] columnName = new string[] { "column1", "column2" }; string[] smokeColumnName = new string[] { "column1" }; ConstraintType c_type = ConstraintType.PrimaryKey; var cons = new ConstraintName(schemaName, tableName, columnName, c_type); var expectedConstraintString = "PK_schemaName_tableName"; Assert.AreEqual(expectedConstraintString, cons.ToString()); }
public void ShouldReturnDefaultConstraintNameWithDBOSchemaForConstraintNameClassTestFixture() { var schemaName = "dbo"; var tableName = "tableName"; string[] columnName = new string[] { "column1", "column2" }; string[] smokeColumnName = new string[] { "column1" }; ConstraintType c_type = ConstraintType.Default; var cons = new ConstraintName(schemaName, tableName, columnName, c_type); var expectedConstraintString = "DF_tableName_column1_column2"; Assert.AreEqual(expectedConstraintString, cons.ToString()); }
public void ShouldSetPropertiesForConstraintNameClassTestFixture() { var schemaName = "schemaName"; var tableName = "tableName"; string[] columnName = new string[] { "column1", "column2" }; string[] smokeColumnName = new string[] { "column1" }; var cons = new ConstraintName(schemaName, tableName, columnName, ConstraintType.Default); Assert.AreEqual(schemaName, cons.SchemaName); Assert.AreEqual(tableName, cons.TableName); Assert.AreEqual(columnName, cons.ColumnName); Assert.AreNotEqual(smokeColumnName, cons.ColumnName); Assert.AreEqual(ConstraintType.Default, cons.Type); }
internal override string generateCreateSql() { /* * Oracle> ALTER TABLE aact ADD CONSTRAINT FK_AACT_ACID FOREIGN KEY (ACID) REFERENCES ACC (ACID) */ StringBuilder sb = new StringBuilder(); sb.Append("ALTER TABLE ") .Append(FullTableName.ToUpper()) .Append(@" ADD CONSTRAINT ") .Append(ConstraintName.ToUpper()) // oracle doesn't like the schema name put here, so we use the constraint name only .Append(@" FOREIGN KEY ("); foreach (FieldInfo fi in this.SourceFields) { sb.Append(fi.Name).Append(@", "); } sb.Remove(sb.Length - 2, 2); sb.Append(@") REFERENCES ") .Append(this.ReferencesFullTableName.ToUpper()) .Append(@" ("); foreach (FieldInfo fi2 in this.ReferencesFields) { sb.Append(fi2.Name).Append(", "); } sb.Remove(sb.Length - 2, 2); sb.Append(")"); // ON DELETE RESTRICT ON UPDATE RESTRICT)"); string ret = sb.ToString(); return(ret); }
public void ShouldNotIncludeColumnsForPrimaryKey() { var name = new ConstraintName("dbo", "TableName", new[] { "does", "not", "matter" }, ConstraintType.PrimaryKey); Assert.That(name.ToString(), Is.EqualTo("PK_TableName")); }
protected override IEnumerable <Command> OnCreate(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context) { var command = new Command(); command.Append($"ALTER TABLE {RelationName.AsSqlIndentifier()}"); if (!SqlHelper.IsImplicitIntegrityConstraintName(ConstraintName)) { command.Append($" ADD CONSTRAINT {ConstraintName.AsSqlIndentifier()}"); } else { command.Append(" ADD"); } switch (RelationConstraintType) { case RelationConstraintType.Check: command.Append($" {Triggers[0].TriggerSource}"); break; case RelationConstraintType.NotNull: break; case RelationConstraintType.ForeignKey: case RelationConstraintType.PrimaryKey: case RelationConstraintType.Unique: { var fields = Index .Segments .OrderBy(s => s.FieldPosition) .Select(s => s.FieldName); command.Append($" {RelationConstraintType.ToDescription()} ({string.Join(", ", fields)})"); if (RelationConstraintType == RelationConstraintType.ForeignKey) { var referenceConstraint = sourceMetadata.MetadataConstraints.ReferenceConstraintsByName[ConstraintName]; var referenceRelationConstraint = referenceConstraint.RelationConstraintUq; var primaryKeyFields = referenceRelationConstraint .Index .Segments .OrderBy(s => s.FieldPosition) .Select(s => s.FieldName); command .AppendLine() .Append($" REFERENCES {referenceRelationConstraint.RelationName} ({string.Join(", ", primaryKeyFields)})"); if (referenceConstraint.UpdateRule != ConstraintRule.Restrict) { command .AppendLine() .Append($" ON UPDATE {referenceConstraint.UpdateRule.ToDescription()}"); } if (referenceConstraint.DeleteRule != ConstraintRule.Restrict) { command .AppendLine() .Append($" ON DELETE {referenceConstraint.DeleteRule.ToDescription()}"); } if (referenceConstraint.UpdateRule != ConstraintRule.Restrict || referenceConstraint.DeleteRule != ConstraintRule.Restrict) { command.AppendLine(); } } command.Append(AddConstraintUsingIndex(sourceMetadata, targetMetadata, context)); break; } default: throw new ArgumentOutOfRangeException($"Unknown relation constraint type: {RelationConstraintType}."); } yield return(command); }
protected override IEnumerable <Command> OnDrop(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context) { yield return(new Command() .Append($"ALTER TABLE {RelationName.AsSqlIndentifier()} DROP CONSTRAINT {ConstraintName.AsSqlIndentifier()}")); }