private static void LookForAutoGeneratedId(DatabaseTable databaseTable) { var pk = databaseTable.PrimaryKeyColumn; if (pk == null) { return; } if (Databases.Oracle.Conversion.LooksLikeAutoNumberDefaults(pk.DefaultValue)) { //Oracle 12c default values from sequence pk.IsAutoNumber = true; return; } var match = OracleSequenceTrigger.FindTrigger(databaseTable); if (match != null) { pk.IsAutoNumber = true; } }
public void FindOracleAutoNumberTrigger() { //arrange var schema = new DatabaseSchema(null, SqlType.Oracle); var table = schema.AddTable("Test"); var id = table.AddColumn <int>("Id").AddPrimaryKey(); id.IsAutoNumber = true; table.AddColumn <string>("Name").AddLength(200); var databaseTrigger = new DatabaseTrigger { Name = "Test_INS_TRG", TriggerEvent = "INSERT", TriggerBody = @"BEGIN SELECT ""Test_SEQ"".NEXTVAL INTO :NEW.""Id"" FROM DUAL; END;", TriggerType = "BEFORE EACH ROW", }; table.Triggers.Add(databaseTrigger); var databaseSequence = new DatabaseSequence { IncrementBy = 1, MinimumValue = 0, Name = "Test_SEQ" }; schema.Sequences.Add(databaseSequence); //act var result = OracleSequenceTrigger.FindTrigger(table); //assert Assert.IsNotNull(result); Assert.IsNotNull(result.DatabaseTrigger); Assert.IsNotNull(result.DatabaseSequence); Assert.AreEqual(databaseSequence, result.DatabaseSequence); Assert.AreEqual(databaseTrigger, result.DatabaseTrigger); }