diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/update.sql index e27d2dcac..86a7ba195 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/update.sql @@ -3,28 +3,37 @@ ALTER TRIGGER {{ conn|qtIdent(o_data.name) }} ON {{ conn|qtIdent(o_data.nspname, RENAME TO {{ conn|qtIdent(data.name) }}; {% endif %} -{% if data.prosrc is defined and o_data.lanname == 'edbspl' and o_data.prosrc != data.prosrc %} +{% if ((data.prosrc is defined or data.is_row_trigger is defined or data.evnt_insert is defined or data.evnt_delete is defined or data.evnt_update is defined or data.fires is defined) and o_data.lanname == 'edbspl' and (o_data.prosrc != data.prosrc or data.is_row_trigger != o_data.is_row_trigger or data.evnt_insert != o_data.evnt_insert or data.evnt_delete != o_data.evnt_delete or data.evnt_update != o_data.evnt_update or o_data.fires != data.fires)) %} {% set or_flag = False %} CREATE OR REPLACE TRIGGER {{ conn|qtIdent(data.name) }} - {{o_data.fires}} {% if o_data.evnt_insert %}INSERT{% set or_flag = True %} -{% endif %}{% if o_data.evnt_delete %} + {% if data.fires is defined %} {{data.fires}} {% else %}{{o_data.fires}}{% endif %} {% if data.evnt_insert is not defined %} {% if o_data.evnt_insert %}INSERT{% set or_flag = True %} +{% endif %}{% else %}{% if data.evnt_insert %}INSERT{% set or_flag = True %}{% endif %}{% endif %}{% if data.evnt_delete is not defined %}{% if o_data.evnt_delete %} {% if or_flag %} OR {% endif %}DELETE{% set or_flag = True %} -{% endif %}{% if o_data.evnt_truncate %} +{% endif %}{% else %} {% if data.evnt_delete %} +{% if or_flag %} OR {% endif %}DELETE{% set or_flag = True %} {%endif %}{% endif %}{% if data.evnt_truncate is not defined %}{% if o_data.evnt_truncate %} {% if or_flag %} OR {% endif %}TRUNCATE{% set or_flag = True %} -{% endif %}{% if o_data.evnt_update %} +{% endif %}{% else %} {% if data.evnt_truncate %} +{% if or_flag %} OR {% endif %}TRUNCATE{% set or_flag = True %} {%endif %} {% endif %}{% if data.evnt_update is not defined %}{% if o_data.evnt_update %} {% if or_flag %} OR {% endif %}UPDATE {% if o_data.columns|length > 0 %}OF {% for c in o_data.columns %}{% if loop.index != 1 %}, {% endif %}{{ conn|qtIdent(c.column) }}{% endfor %}{% endif %} +{% endif %}{% else %} {% if data.evnt_update %} +{% if or_flag %} OR {% endif %}UPDATE {% if o_data.columns|length > 0 %}OF {% for c in o_data.columns %}{% if loop.index != 1 %}, {% endif %}{{ conn|qtIdent(c.column) }}{% endfor %}{% endif %}{% endif %} {% endif %} ON {{ conn|qtIdent(data.schema, data.table) }} {% if o_data.tgdeferrable %} DEFERRABLE{% if o_data.tginitdeferred %} INITIALLY DEFERRED{% endif %} -{% endif %} - FOR EACH{% if o_data.is_row_trigger %} ROW{% else %} STATEMENT{% endif %} +{% endif %}{% if data.is_row_trigger is not defined %} + FOR EACH{% if o_data.is_row_trigger %} ROW{% else %} STATEMENT{% endif %} {% else %} + FOR EACH{% if data.is_row_trigger %} ROW{% else %} STATEMENT{% endif %} {% endif %} {% if o_data.whenclause %} WHEN {{ o_data.whenclause }} {% endif %} +{% if (data.prosrc is not defined) %} +{{ o_data.prosrc }}; +{% else %} {{ data.prosrc }}; +{% endif %} {% if data.description is not defined and o_data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py index 20a874e55..baa2f7898 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py @@ -739,10 +739,19 @@ class TriggerView(PGChildNodeView): if not status: return internal_server_error(errormsg=res) + # We need oid to add object in browser tree and if user + # update the trigger then new OID is getting generated + # so we need to return new OID of trigger. + SQL = render_template("/".join([self.template_path, 'get_oid.sql']), + tid=tid, data=data) + status, new_trid = self.conn.execute_scalar(SQL) + if not status: + return internal_server_error(errormsg=new_trid) + return jsonify( node=self.blueprint.generate_browser_node( - trid, - scid, + new_trid, + tid, name, icon="icon-%s" % self.node_type ) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/templates/trigger/js/trigger.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/templates/trigger/js/trigger.js index d5c5698d0..c0527e62a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/templates/trigger/js/trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/templates/trigger/js/trigger.js @@ -216,6 +216,11 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) { return false; } } else { + // Check if it is row trigger then enabled it. + var is_row_trigger = m.get('is_row_trigger'); + if (!_.isUndefined(is_row_trigger) && m.node_info['server']['server_type'] == 'ppas') { + return false; + } // Disable it return true; } @@ -335,6 +340,11 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) { return false; } } else { + // Check if it is row trigger then enabled it. + var fires_ = m.get('fires'); + if (!_.isUndefined(fires_) && m.node_info['server']['server_type'] == 'ppas') { + return false; + } // Disable it return true; } @@ -348,6 +358,9 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) { group: '{{ _('Events') }}', control: Backform.CustomSwitchControl, disabled: function(m) { + var evn_insert = m.get('evnt_insert'); + if (!_.isUndefined(evn_insert) && m.node_info['server']['server_type'] == 'ppas') + return false; return m.inSchemaWithModelCheck.apply(this, [m]); } },{ @@ -356,6 +369,9 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) { group: '{{ _('Events') }}', control: Backform.CustomSwitchControl, disabled: function(m) { + var evn_update = m.get('evnt_update'); + if (!_.isUndefined(evn_update) && m.node_info['server']['server_type'] == 'ppas') + return false; return m.inSchemaWithModelCheck.apply(this, [m]); } },{ @@ -364,6 +380,9 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) { group: '{{ _('Events') }}', control: Backform.CustomSwitchControl, disabled: function(m) { + var evn_delete = m.get('evnt_delete'); + if (!_.isUndefined(evn_delete) && m.node_info['server']['server_type'] == 'ppas') + return false; return m.inSchemaWithModelCheck.apply(this, [m]); } },{