您好,欢迎来到上往知道网络问答平台!
致力于提供建站技巧、常见问题等知识问答服务

淮北网站优化【淮北微信公众号购物商城小程序制作】淮北网店美工排版设计_淮北网页推广公司_淮北网站开发公司—淮北微信公众号小程序网站代运营网络维护托管服务

分类:建站公司 | 浏览: 54次
2021-07-26 09:25:13

淮北网站优化【淮北微信公众号购物商城小程序制作】淮北网店美工排版设计_淮北网页推广公司_淮北网站开发公司—淮北微信公众号小程序网站代运营网络维护托管服务

网站建设.jpg

网页制作

淮北,别称相城,安徽省地级市,全国重要的资源型城市 [1]  [31]  ,打造绿色转型发展示范城市 [2]  ,地处安徽省东北部,北接宿州市萧县,南临亳州市蒙城县、涡阳县,东与宿州市埇桥区毗邻,西连河南省商丘市永城市。南北长150千米,东西宽50千米。总面积2741平方千米。截至2020年下辖3个区、1个县。截至2020年11月1日,淮北市常住人口1970265人 [30]  。

淮北是“长三角城市群”、“淮海经济区”、“徐州都市圈”、“宿淮蚌都市圈”、“宿淮城市组群”成员城市,全国卫生先进城市、国家园林城市、全国科技进步先进市、全国无障碍建设城市、智慧城市、全国创业先进城市、全国文明城市 [3]  。

4000多年前,商汤十一世祖相土建城于相山南麓。风景名胜有相山公园、龙脊山、南湖湿地公园、华家湖、石板街、临涣古镇、隋唐运河古镇等,纪念地有淮海战役总前委旧址、双堆集战场旧址等。濉溪口子窖口感“香气馥郁,窖香优雅”,是中国兼香型白酒的典型代表。

2018年,淮北市实现社会消费品零售总额324.5亿元 [4]  。2019年,淮北市实现地区生产总值1077.9亿元 [5]  。2020年,淮北市实现地区生产总值1119.1亿元。


微信公众号开发

PostgreSQL 触发器

PostgreSQL 触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。

下面是关于 PostgreSQL 触发器几个比较重要的点:

  • PostgreSQL 触发器可以在下面几种情况下触发:

    • 在执行操作之前(在检查约束并尝试插入、更新或删除之前)。

    • 在执行操作之后(在检查约束并插入、更新或删除完成之后)。

    • 更新操作(在对一个视图进行插入、更新、删除时)。

  • 触发器的 FOR EACH ROW 属性是可选的,如果选中,当操作修改时每行调用一次;相反,选中 FOR EACH STATEMENT,不管修改了多少行,每个语句标记的触发器执行一次。

  • WHEN 子句和触发器操作在引用 NEW.column-name 和 OLD.column-name 表单插入、删除或更新时可以访问每一行元素。其中 column-name 是与触发器关联的表中的列的名称。

  • 如果存在 WHEN 子句,PostgreSQL 语句只会执行 WHEN 子句成立的那一行,如果没有 WHEN 子句,PostgreSQL 语句会在每一行执行。

  • BEFORE 或 AFTER 关键字决定何时执行触发器动作,决定是在关联行的插入、修改或删除之前或者之后执行触发器动作。

  • 要修改的表必须存在于同一数据库中,作为触发器被附加的表或视图,且必须只使用 tablename,而不是 database.tablename。

  • 当创建约束触发器时会指定约束选项。这与常规触发器相同,只是可以使用这种约束来调整触发器触发的时间。当约束触发器实现的约束被违反时,它将抛出异常。

语法

创建触发器时的基础语法如下:

CREATE  TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event_name
ON table_name[
 -- 触发器逻辑....];

在这里,event_name 可以是在所提到的表 table_name 上的 INSERT、DELETE 和 UPDATE 数据库操作。您可以在表名后选择指定 FOR EACH ROW。

以下是在 UPDATE 操作上在表的一个或多个指定列上创建触发器的语法:

CREATE  TRIGGER trigger_name [BEFORE|AFTER] UPDATE OF column_name
ON table_name[
 -- 触发器逻辑....];

实例

让我们假设一个情况,我们要为被插入到新创建的 COMPANY 表(如果已经存在,则删除重新创建)中的每一个记录保持审计试验:

runoobdb=# CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL);


商城小程序开发

为了保持审计试验,我们将创建一个名为 AUDIT 的新表。每当 COMPANY 表中有一个新的记录项时,日志消息将被插入其中:

runoobdb=# CREATE TABLE AUDIT(
   EMP_ID INT NOT NULL,
   ENTRY_DATE TEXT NOT NULL);

在这里,ID 是 AUDIT 记录的 ID,EMP_ID 是来自 COMPANY 表的 ID,DATE 将保持 COMPANY 中记录被创建时的时间戳。所以,现在让我们在 COMPANY 表上创建一个触发器,如下所示:

runoobdb=# CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();

auditlogfunc() 是 PostgreSQL 一个程序,其定义如下:

CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS $example_table$   BEGIN
      INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;$example_table$ LANGUAGE plpgsql;

现在,我们开始往 COMPANY 表中插入数据:

runoobdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 );

这时,COMPANY 表中插入了一条记录:

同时, AUDIT 表中也插入了一条记录,因为我们在插入 COMPANY 表时创建了一个触发器。相似的,我们也可以根据需求在更新和删除时创建触发器:

emp_id |          entry_date--------+-------------------------------
      1 | 2013-05-05 15:49:59.968+05:30(1 row)

列出触发器

你可以把从 pg_trigger 表中把当前数据库所有触发器列举出来:

runoobdb=# SELECT * FROM pg_trigger;

如果,你想列举出特定表的触发器,语法如下:

runoobdb=# SELECT tgname FROM pg_trigger, pg_class WHERE tgrelid=pg_class.oid AND relname='company';

得到结果如下:

 tgname-----------------
 example_trigger(1 row)

删除触发器

删除触发器基础语法如下:

drop trigger ${trigger_name} on ${table_of_trigger_dependent};

删除本文上表 company 上的触发器 example_trigger 的指令为:

drop trigger example_trigger on company;


淮北网站优化淮北微信公众号购物商城小程序制作淮北网店美工排版设计_淮北网页推广公司_淮北网站开发公司—淮北微信公众号小程序网站代运营网络维护托管服务

满意回答
2021-07-26 09:25:13

相关问题

建站公司 更多+
热门地区
网站案例
  • 拉菲葡萄酒官方网站
  • HISENSE官方网站
  • 美国男人厨具官方网站
  • 万利达教育电子