Ejemplo n.º 1
0
        private string WriteExistingTrigger()
        {
            //does it already have a trigger which sets the sequence? In which case, note it...
            var result = OracleSequenceTrigger.FindTrigger(_table);

            if (result == null)
            {
                return(null);
            }
            var generator = new OracleMigrationGenerator();
            var sb        = new StringBuilder();

            if (result.DatabaseSequence != null)
            {
                sb.AppendLine(generator.AddSequence(result.DatabaseSequence));
            }
            sb.AppendLine("-- use auto-increment trigger " + result.DatabaseTrigger.Name);
            sb.Append(generator.AddTrigger(_table, result.DatabaseTrigger));
            return(sb.ToString());
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
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);
        }