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;
            }
        }
Exemple #2
0
        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);
        }