void pgTrigger::SetEnabled(ctlTree *browser, const bool b) { if (GetQuotedFullTable().Len() > 0 && ((enabled && !b) || (!enabled && b))) { wxString sql = wxT("ALTER TABLE ") + GetQuotedFullTable() + wxT(" "); if (enabled && !b) sql += wxT("DISABLE"); else if (!enabled && b) sql += wxT("ENABLE"); sql += wxT(" TRIGGER ") + GetQuotedIdentifier(); GetDatabase()->ExecuteVoid(sql); } enabled = b; UpdateIcon(browser); }
bool pgTrigger::DropObject(wxFrame *frame, ctlTree *browser, bool cascaded) { wxString sql = wxT("DROP TRIGGER ") + GetQuotedIdentifier() + wxT(" ON ") + GetQuotedFullTable(); if (cascaded) sql += wxT(" CASCADE"); return GetDatabase()->ExecuteVoid(sql); }
wxString pgRule::GetSql(ctlTree *browser) { if (sql.IsNull()) { sql = wxT("-- Rule: ") + GetQuotedIdentifier() + wxT(" ON ") + GetQuotedFullTable() + wxT("\n\n") + wxT("-- DROP RULE ") + GetQuotedIdentifier() + wxT(" ON ") + GetQuotedFullTable() + wxT(";\n\n") + wxT("CREATE OR REPLACE") + GetFormattedDefinition().Mid(6) // the backend pg_get_ruledef gives CREATE only + wxT("\n"); if (!GetEnabled()) { sql += wxT("ALTER TABLE ") + GetQuotedFullTable() + wxT(" ") + wxT("DISABLE RULE ") + GetQuotedIdentifier() + wxT(";\n"); } if (!GetComment().IsEmpty()) sql += wxT("COMMENT ON RULE ") + GetQuotedIdentifier() + wxT(" ON ") + GetQuotedFullTable() + wxT(" IS ") + qtDbString(GetComment()) + wxT(";\n"); } return sql; }
wxString pgTrigger::GetSql(ctlTree *browser) { if (sql.IsNull() && (this->triggerFunction || GetLanguage() == wxT("edbspl"))) { sql = wxT("-- Trigger: ") + GetName() + wxT(" on ") + GetQuotedFullTable() + wxT("\n\n") + wxT("-- DROP TRIGGER ") + qtIdent(GetName()) + wxT(" ON ") + GetQuotedFullTable() + wxT(";\n\n"); if (GetLanguage() == wxT("edbspl")) sql += wxT("CREATE OR REPLACE TRIGGER "); else if (GetConnection()->BackendMinimumVersion(8, 2) && GetIsConstraint()) sql += wxT("CREATE CONSTRAINT TRIGGER "); else sql += wxT("CREATE TRIGGER "); sql += qtIdent(GetName()) + wxT("\n ") + GetFireWhen() + wxT(" ") + GetEvent(); sql += wxT("\n ON ") + GetQuotedFullTable(); if (GetDeferrable()) { sql += wxT("\n DEFERRABLE INITIALLY "); if (GetDeferred()) sql += wxT("DEFERRED"); else sql += wxT("IMMEDIATE"); } sql += wxT("\n FOR EACH ") + GetForEach(); if (GetConnection()->BackendMinimumVersion(8, 5) && !GetWhen().IsEmpty()) sql += wxT("\n WHEN (") + GetWhen() + wxT(")"); if (GetLanguage() == wxT("edbspl")) { sql += wxT("\n") + GetSource(); if (!sql.Trim().EndsWith(wxT(";"))) sql = sql.Trim() + wxT(";"); sql += wxT("\n"); } else { sql += wxT("\n EXECUTE PROCEDURE ") + triggerFunction->GetQuotedFullIdentifier() + wxT("(") + GetArguments() + wxT(")") + wxT(";\n"); } if (!GetEnabled()) { sql += wxT("ALTER TABLE ") + GetQuotedFullTable() + wxT(" ") + wxT("DISABLE TRIGGER ") + GetQuotedIdentifier() + wxT(";\n"); } if (!GetComment().IsEmpty()) sql += wxT("COMMENT ON TRIGGER ") + GetQuotedIdentifier() + wxT(" ON ") + GetQuotedFullTable() + wxT(" IS ") + qtDbString(GetComment()) + wxT(";\n"); } return sql; }