public virtual TriggerSchema GetNewTriggerSchema(string name)
        {
            TriggerSchema schema = new TriggerSchema(this);

            schema.Name = name;
            return(schema);
        }
        protected virtual TriggerSchema GetTableTrigger(DataRow row, TableSchema table)
        {
            TriggerSchema schema = new TriggerSchema(this);

            schema.TableName = table.Name;

            return(schema);
        }
Ejemplo n.º 3
0
        protected virtual string GetTriggerCreateStatement(TriggerSchema trigger)
        {
            StringBuilder sb = new StringBuilder();

//		{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
//        [ WITH APPEND ]
//        [ NOT FOR REPLICATION ]
//        AS
//        [ { IF UPDATE ( column )
//            [ { AND | OR } UPDATE ( column ) ]
//                [ ...n ]
//        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
//                { comparison_operator } column_bitmask [ ...n ]
//        } ]
//        sql_statement [ ...n ]

            sb.Append("CREATE TRIGGER ");
            sb.Append(trigger.Name);
            sb.Append(" ON ");
            sb.Append(trigger.TableName);

            if (trigger.TriggerType == TriggerType.Before)
            {
                sb.Append(" FOR ");
            }
            else
            {
                sb.Append(" AFTER ");
            }

            switch (trigger.TriggerEvent)
            {
            case TriggerEvent.Delete:
                sb.Append("DELETE");
                break;

            case TriggerEvent.Insert:
                sb.Append("INSERT");
                break;

            case TriggerEvent.Update:
                sb.Append("UPDATE");
                break;

            default:
                throw new NotImplementedException();
            }

            sb.Append(" AS ");
            sb.Append(Environment.NewLine);
            sb.Append(trigger.Source);
            sb.Append(";");

            return(sb.ToString());
        }
Ejemplo n.º 4
0
 public TriggerSchema(TriggerSchema trigger)
     : base(trigger)
 {
     tableName       = trigger.tableName;
     triggerType     = trigger.triggerType;
     triggerFireType = trigger.triggerFireType;
     triggerEvent    = trigger.triggerEvent;
     position        = trigger.position;
     isActive        = trigger.isActive;
     source          = trigger.source;
 }
Ejemplo n.º 5
0
		public TriggerSchema (TriggerSchema trigger)
			: base (trigger)
		{
			tableName = trigger.tableName;
			triggerType = trigger.triggerType;
			triggerFireType = trigger.triggerFireType;
			triggerEvent = trigger.triggerEvent;
			position = trigger.position;
			isActive = trigger.isActive;
			source = trigger.source;
		}
        protected virtual string GetTriggerCreateStatement(TriggerSchema trigger)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("CREATE TRIGGER ");
            sb.Append(trigger.Name);
            if (trigger.TriggerType == TriggerType.Before)
            {
                sb.Append(" BEFORE ");
            }
            else
            {
                sb.Append(" AFTER ");
            }

            switch (trigger.TriggerEvent)
            {
            case TriggerEvent.Delete:
                sb.Append("DELETE");
                break;

            case TriggerEvent.Insert:
                sb.Append("INSERT");
                break;

            case TriggerEvent.Update:
                sb.Append("UPDATE");
                break;

            default:
                throw new NotImplementedException();
            }

            sb.Append(" ON ");
            sb.Append(trigger.TableName);
            sb.Append(" FOR EACH ROW ");
            sb.Append(Environment.NewLine);
            sb.Append(trigger.Source);
            sb.Append(";");

            return(sb.ToString());
        }
Ejemplo n.º 7
0
        public override ICollection <TriggerSchema> GetTriggers()
        {
            CheckConnectionState();
            List <TriggerSchema> triggers = new List <TriggerSchema> ();

            IDbCommand command = connectionProvider.CreateCommand("SELECT RDB$TRIGGER_NAME, RDB$RELATION_NAME, RDB$TRIGGER_TYPE FROM RDB$TRIGGERS;");

            using (command) {
                using (IDataReader r = command.ExecuteReader()) {
                    while (r.Read())
                    {
                        TriggerSchema trigger = new TriggerSchema(this);
                        trigger.Name = r.GetString(0);
                        //TODO: table and type
                        triggers.Add(trigger);
                    }
                    r.Close();
                }
                connectionProvider.Close(command.Connection);
            }

            return(triggers);
        }
 public virtual void DropTrigger(TriggerSchema trigger)
 {
     throw new NotImplementedException();
 }
		//http://www.sqlite.org/lang_createtrigger.html
		public override void CreateTrigger (TriggerSchema trigger)
		{
			string sql = GetTriggerCreateStatement (trigger);
			ExecuteNonQuery (sql);
		}
		
		public override ICollection<TriggerSchema> GetTriggers ()
		{
			CheckConnectionState ();
			List<TriggerSchema> triggers = new List<TriggerSchema> ();

			IDbCommand command = connectionProvider.CreateCommand ("SELECT RDB$TRIGGER_NAME, RDB$RELATION_NAME, RDB$TRIGGER_TYPE FROM RDB$TRIGGERS;");
			using (command) {
				using (IDataReader r = command.ExecuteReader ()) {
					while (r.Read ()) {
						TriggerSchema trigger = new TriggerSchema (this);
						trigger.Name = r.GetString (0);
						//TODO: table and type
						triggers.Add (trigger);
					}
					r.Close ();
				}
				connectionProvider.Close (command.Connection);
			}

			return triggers;
		private void AddTrigger (TriggerSchema trigger)
		{
			store.AppendValues (trigger.Name, trigger.TriggerType.ToString (),
				trigger.TriggerEvent.ToString (), trigger.TriggerFireType == TriggerFireType.ForEachRow,
				trigger.Position.ToString (), trigger.IsActive, trigger.Comment,
				trigger.Source , trigger);
		}
		
		//http://www.postgresql.org/docs/8.2/interactive/sql-altertrigger.html
		public override void RenameTrigger (TriggerSchema trigger, string name)
		{
			ExecuteNonQuery ("ALTER TRIGGER " + trigger.Name + " ON " + trigger.TableName + " RENAME TO " + name + ";");
			
			trigger.Name = name;
Ejemplo n.º 13
0
 //http://msdn2.microsoft.com/en-us/library/aa258846(SQL.80).aspx
 public override void DropTrigger(TriggerSchema trigger)
 {
     ExecuteNonQuery("DROP TRIGGER " + trigger.Name);
 }
		protected virtual string GetTriggerCreateStatement (TriggerSchema trigger)
		{
			StringBuilder sb = new StringBuilder ();
			
			sb.Append ("CREATE TRIGGER ");
			sb.Append (trigger.Name);
			
			switch (trigger.TriggerType) {
			case TriggerType.Before:
				sb.Append (" BEFORE");
				break;
			case TriggerType.After:
				sb.Append (" AFTER");
				break;
			default:
				throw new NotImplementedException ();
			}
			
			switch (trigger.TriggerEvent) {
			case TriggerEvent.Insert:
				sb.Append (" INSERT ");
				break;
			case TriggerEvent.Update:
				sb.Append (" UPDATE ");
				break;
			case TriggerEvent.Delete:
				sb.Append (" DELETE ");
				break;
			default:
				throw new NotImplementedException ();
			}
			
			sb.Append ("ON ");
			sb.Append (trigger.TableName);
			sb.Append (' ');
			sb.Append (Environment.NewLine);
			
			switch (trigger.TriggerFireType) {
			case TriggerFireType.ForEachRow:
			case TriggerFireType.ForEachStatement:
				sb.Append (" FOR EACH ROW ");
				break;
			default:
				throw new NotImplementedException ();
			}
			
			sb.Append (Environment.NewLine);
			sb.Append ("BEGIN ");
			sb.Append (Environment.NewLine);
			sb.Append (trigger.Source);
			sb.Append (' ');
			sb.Append (Environment.NewLine);
			sb.Append ("END;");
			
			return sb.ToString ();
		}
 public virtual void RenameTrigger(TriggerSchema trigger, string name)
 {
     throw new NotImplementedException();
 }
        //http://www.postgresql.org/docs/8.2/interactive/sql-altertrigger.html
        public override void RenameTrigger(TriggerSchema trigger, string name)
        {
            ExecuteNonQuery("ALTER TRIGGER " + trigger.Name + " ON " + trigger.TableName + " RENAME TO " + name + ";");

            trigger.Name = name;
        }
 //http://www.postgresql.org/docs/8.2/interactive/sql-droptrigger.html
 public override void DropTrigger(TriggerSchema trigger)
 {
     ExecuteNonQuery("DROP TRIGGER IF EXISTS " + trigger.Name + " ON " + trigger.TableName + ";");
 }
		//http://www.sqlite.org/lang_droptrigger.html
		public override void DropTrigger (TriggerSchema trigger)
		{
			ExecuteNonQuery ("DROP TRIGGER IF EXISTS " + trigger.Name);
		}
		protected virtual TriggerSchema GetTableTrigger (DataRow row, TableSchema table)
		{
			TriggerSchema schema = new TriggerSchema (this);
			schema.TableName = table.Name;
			
			return schema;
		}
		public virtual void DropTrigger (TriggerSchema trigger)
		{
			throw new NotImplementedException ();
		}
Ejemplo n.º 21
0
        //http://msdn2.microsoft.com/en-us/library/aa258254(SQL.80).aspx
        public override void CreateTrigger(TriggerSchema trigger)
        {
            string sql = GetTriggerCreateStatement(trigger);

            ExecuteNonQuery(sql);
        }
		public virtual void RenameTrigger (TriggerSchema trigger, string name)
		{
			throw new NotImplementedException ();
		}
Ejemplo n.º 23
0
 //http://msdn2.microsoft.com/en-us/library/aa225939(SQL.80).aspx
 public override void AlterTrigger(TriggerSchema trigger)
 {
     throw new NotImplementedException();
 }
		public virtual TriggerSchema GetNewTriggerSchema (string name)
		{
			TriggerSchema schema = new TriggerSchema (this);
			schema.Name = name;
			return schema;
		}
Ejemplo n.º 25
0
 //http://msdn2.microsoft.com/en-US/library/aa238878(SQL.80).aspx
 public override void RenameTrigger(TriggerSchema trigger, string name)
 {
     Rename(trigger.Name, name, "OBJECT");
     trigger.Name = name;
 }
		
		//http://www.postgresql.org/docs/8.2/interactive/sql-altertrigger.html
		public override void AlterTrigger (TriggerSchema trigger)
		{
			throw new NotImplementedException ();