protected override void ExecuteStatement(ExecutionContext context)
{
if (!context.DirectAccess.TriggerExists(TriggerName))
throw new ObjectNotFoundException(TriggerName);
//if (!context.User.CanAlter(DbObjectType.Trigger, TriggerName))
// throw new MissingPrivilegesException(context.User.Name, TriggerName, Privileges.Alter);
var trigger = context.DirectAccess.GetObject(DbObjectType.Trigger, TriggerName) as Trigger;
if (trigger == null)
throw new ObjectNotFoundException(TriggerName);
var triggerInfo = trigger.TriggerInfo;
if (Action.ActionType == AlterTriggerActionType.Rename) {
var action = (RenameTriggerAction) Action;
triggerInfo = triggerInfo.Rename(action.Name);
if (!context.DirectAccess.DropTrigger(TriggerName))
throw new InvalidOperationException(String.Format("Could not drop the trigger '{0}' to rename", TriggerName));
context.DirectAccess.CreateTrigger(triggerInfo);
} else if (Action.ActionType == AlterTriggerActionType.ChangeStatus) {
var action = (ChangeTriggerStatusAction) Action;
triggerInfo.Status = action.Status;
context.DirectAccess.AlterObject(triggerInfo);
}
}