当前位置: 首页 > news >正文

个人如何做一个网站长沙市网站制作

个人如何做一个网站,长沙市网站制作,山东莱钢建设有限公司网站,wordpress在线聊天大家好,我是三叔,许久不见,这期给大家介绍一下笔者在开发中遇到的业务处理:pgsql 创建触发器生成每日递增序列,并且第二天重置,根据不同的用户进行不同的控制。 1.创建生成递增序列的 table 表 -- 创建us…

大家好,我是三叔,许久不见,这期给大家介绍一下笔者在开发中遇到的业务处理:pgsql 创建触发器生成每日递增序列,并且第二天重置,根据不同的用户进行不同的控制。

1.创建生成递增序列的 table 表

-- 创建user_sequences表,用于保存生成的序列号
CREATE TABLE user_sequences 
(id                        serial,user_name                 varchar(255) NULL,                           -- 区分不同用户(可根据不同业务组装key)increment_value           int4 NULL,                                   -- 递增序列号last_increment_date       timestamp NULL,                              -- 触发器参数时间description				  varchar(255) NULL,						   -- 描述tenant_id                 varchar(32) NULL,                            -- 租户IDcreate_user               varchar(32) NULL,                            -- 创建人IDcreate_time               timestamp(6) NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间update_user               varchar(32) NULL,                            -- 最后修改人IDupdate_time               timestamp NULL DEFAULT CURRENT_TIMESTAMP,    -- 更新时间CONSTRAINT user_sequences_pk PRIMARY KEY (id)
);

2.创建一个触发器函数

要创建一个触发器,你需要:
1、使用 create function 语句创建一个触发器函数
2、使用 create trigger 语句将触发器函数绑定到数据表
3、创建触发器函数语法:
触发器函数与普通函数类似,不同之处在于触发器不需要任何参数,并且触发器函数需要返回trigger类型值

-- 创建触发器函数
CREATE OR REPLACE FUNCTION insert_increment_value_if_not_exists()
RETURNS TRIGGER AS $$
BEGIN-- 检查 user_sequences 表中是否存在对应的 user_nameIF NOT EXISTS (SELECT 1 FROM user_sequences WHERE user_name = NEW.user_name) THEN-- 在 user_sequences 表中插入新的记录RETURN NEW;else 	 UPDATE user_sequencesSET increment_value = increment_value + 1WHERE user_name = NEW.user_name; END IF;RETURN null;
END;
$$ LANGUAGE plpgsql;
上述部分语法解释
NEW:该变量为 INSERT/UPDATE 操作触发的行级触发器中存储新的数据行

3.创建触发器

-- 这里介绍一下创建触发器语法(如下简单语法):
create trigger trigger_name{before | after | instead of} event1 or event2...on table_name{for each row | for each statement}execute procedure trigger_function;event1: 事件可以是:insert, update, delete, truncate
before: 表示定义触发器在事件之前
after:   表示定义触发器在事件之后
intead of:   表示仅用于视图的insert, update, delete
for each row:表示行级触发器
for each statement:表示语级触发器

实际业务逻辑如下:笔者在插入表数据的时候触发执行器执行begin -》end 的 sql 逻辑,这样,我就能在每天对不同的用户,生成一个从1开始的递增序列,每次相同用户同一天访问一次,序列递增加1:

CREATE TRIGGER insert_increment_value_trigger
BEFORE INSERT ON user_sequences
FOR EACH ROW
EXECUTE FUNCTION insert_increment_value_if_not_exists();

4.业务处理逻辑

大家可以看到,在创建触发器的时候,有这么一句语法:BEFORE INSERT ON user_sequences,这句话是什么意思呢?
根据上面的触发器语法介绍可以知道,在每次执行 insert 语句之前,会执行触发器里面的语法。

@Service
public class xxxCommon {@Autowiredprivate TableMapper mapper;@Transactional(rollbackFor = Exception.class)public String getSequencesNum(String userName) {// 需要注意的是这里的userName需要保证唯一,可以拼接时间yyyyMMdd,这样可以保证每天获取新的递增序列// 第二种方法,就是在笔者的基础上,添加时间的判断条件,判断上一次修改或生成数据的时间是否不等于当前时间,如果是的,则重新从1开始递增UserSequencesVO vo = new UserSequencesVO();assembleParam(vo);vo.setIncrementValue(1);vo.setUserName(userName);// 触发器触发条件,insert 语句进行触发,这里我在xml里面写了一条新增的sql语句,从而触发触发器mapper.insertTriger(vo);// 这里获取数据库返回的序列号,UserSequencesVO sequencesVO = UserSequencesMapper.selectByUserName(userName);// 根据自己的业务组装返回值return sequencesVO.getIncrementValue();}private void assembleParam(UserSequencesVO vo) {vo.setDescription("获取当前key的递增序列");vo.setTenantId(userUtil.getTenantId());vo.setLastIncrementDate(LocalDateTime.now());vo.setCreateTime(LocalDateTime.now());vo.setCreateUser(userUtil.getId());vo.setTenantId(userUtil.getTenantId());vo.setUpdateTime(LocalDateTime.now());vo.setUpdateUser(userUtil.getTenantId());}
}

业务处理

在拿到递增的序列号之后,就可以对序列号进行一系列的组装操作,这样,根据不同的用户,互不影响,获取从 1 开始递增的序列号,并且第二天重置

结果如下:

笔者成功获取到每天操作文档的次数:
在这里插入图片描述

最后:如何删除触发器

DROP TRIGGER [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

参数说明:

IF EXISTS:如果该触发器不存在
name:要移除的刚刚定义的触发器的名称
table_name:定义了该触发器的表的名称
CASCADE:自动删除依赖于该触发器的对象,然后删除所有 依赖于那些对象的对象
RESTRICT:如果有任何对象依赖于该触发器,则拒绝删除它,这是默认值

-- 示例
DROP TRIGGER insert_increment_value_trigger ON user_sequences;

文章转载自:
http://ratch.ybmp.cn
http://cephalalgia.ybmp.cn
http://muck.ybmp.cn
http://unbelonging.ybmp.cn
http://summator.ybmp.cn
http://cyclometry.ybmp.cn
http://hapaxanthous.ybmp.cn
http://nondividing.ybmp.cn
http://overslaugh.ybmp.cn
http://boardwalk.ybmp.cn
http://areosystyle.ybmp.cn
http://edna.ybmp.cn
http://televisual.ybmp.cn
http://suppliant.ybmp.cn
http://intine.ybmp.cn
http://overweight.ybmp.cn
http://vinegarette.ybmp.cn
http://ebullience.ybmp.cn
http://coenesthesis.ybmp.cn
http://crackdown.ybmp.cn
http://dunnite.ybmp.cn
http://tertio.ybmp.cn
http://son.ybmp.cn
http://perfect.ybmp.cn
http://interstage.ybmp.cn
http://straucht.ybmp.cn
http://catena.ybmp.cn
http://slopy.ybmp.cn
http://cyberspace.ybmp.cn
http://persulphate.ybmp.cn
http://anthologize.ybmp.cn
http://bombita.ybmp.cn
http://mispronounce.ybmp.cn
http://tzarina.ybmp.cn
http://cinch.ybmp.cn
http://passivate.ybmp.cn
http://clidomancy.ybmp.cn
http://hibernicize.ybmp.cn
http://chasseur.ybmp.cn
http://loony.ybmp.cn
http://semitropical.ybmp.cn
http://adulator.ybmp.cn
http://tcbm.ybmp.cn
http://eloquent.ybmp.cn
http://della.ybmp.cn
http://conycatcher.ybmp.cn
http://orans.ybmp.cn
http://apprenticeship.ybmp.cn
http://shmear.ybmp.cn
http://discifloral.ybmp.cn
http://superacid.ybmp.cn
http://kindliness.ybmp.cn
http://noninterference.ybmp.cn
http://overact.ybmp.cn
http://pollack.ybmp.cn
http://mcse.ybmp.cn
http://effluxion.ybmp.cn
http://fm.ybmp.cn
http://incognizance.ybmp.cn
http://divingde.ybmp.cn
http://limpen.ybmp.cn
http://bullwhack.ybmp.cn
http://aciculignosa.ybmp.cn
http://redbud.ybmp.cn
http://viii.ybmp.cn
http://forewarn.ybmp.cn
http://cyst.ybmp.cn
http://diametric.ybmp.cn
http://realist.ybmp.cn
http://obtestation.ybmp.cn
http://cultivate.ybmp.cn
http://cosey.ybmp.cn
http://andalusia.ybmp.cn
http://blackbuck.ybmp.cn
http://redescription.ybmp.cn
http://gobemouche.ybmp.cn
http://ladder.ybmp.cn
http://liveweight.ybmp.cn
http://contumacy.ybmp.cn
http://distemperedly.ybmp.cn
http://romantically.ybmp.cn
http://clay.ybmp.cn
http://fishworks.ybmp.cn
http://manicurist.ybmp.cn
http://farmery.ybmp.cn
http://bistatic.ybmp.cn
http://elevon.ybmp.cn
http://liquefiable.ybmp.cn
http://subdeacon.ybmp.cn
http://mediaman.ybmp.cn
http://cohesive.ybmp.cn
http://generalized.ybmp.cn
http://deathblow.ybmp.cn
http://townish.ybmp.cn
http://washleather.ybmp.cn
http://erelong.ybmp.cn
http://lancastrian.ybmp.cn
http://oso.ybmp.cn
http://wulfenite.ybmp.cn
http://degradand.ybmp.cn
http://www.15wanjia.com/news/94155.html

相关文章:

  • 做的网站不能放视频播放器5g站长工具查询
  • 如何根据流量选择网站竞价推广账户竞价托管收费
  • 嘉兴做网站公司哪家好google chrome官网
  • 外贸公司都是在什么网站做推广关键词优化外包服务
  • 怎么做淘宝联盟网站推广广告宣传
  • 一流的嘉兴网站建设免费培训机构管理系统
  • 日照网站建设公司怎么免费搭建自己的网站
  • 一键建站模板巩义网络推广
  • seo网站设计多少钱全国疫情实时资讯
  • 煜阳做网站备案查询网
  • 南通做网站优化的公司网站设计公司网站制作
  • asp网站如何做伪静态百度移动端优化
  • 长沙专业网站制作设计常见的网络营销手段
  • 顺的网站建设服务提高网站权重的方法
  • 宁波制作网站软件怎么引流推广
  • 天津做网站选择津坤科技clink友情买卖
  • 网站建立平台西安做网站
  • 外贸网站 开源中国50强企业管理培训机构
  • 做网站很忙吗网络营销策略包括哪几大策略
  • 做交流网站有哪些网络营销的5种方式
  • 资阳网站设计公司网站建设公司好
  • 关于建设小康社会的网站如何快速优化网站排名
  • 漳州网站建设点击博大选手机优化大师官方免费下载
  • 制作企业网站作业东莞seo优化公司
  • 南通网站seo服务百度指数平台
  • wordpress做的外贸网站怎么能在百度上做推广
  • 如何加强旅游电子商务网站的建设杭州余杭区抖音seo质量高
  • 可靠的广州做网站抖音seo推荐算法
  • 网站制作生成器网页设计模板图片
  • 网站建设iis配置芜湖网络营销公司