能不能用SQL触发器实现工龄计算问题

a504191479 2018-07-30 09:23:51
从工程造价转行过来的一个小菜鸟。

注释:tzrq_调整日期,gl_工龄 ,zgts_总共天数(请假天数),jt_津贴
现在有几个条件:当时间到调整时间时工龄加1. 当工龄加1;津贴加30. 当270<总共天数<365时,工龄减1;当总共天数>365时,工龄减1,且(总共天数-365)/30,整数加到调整日期的月份,余数加到调整日期的天数,并且当余数大于15时向上取整,多加一个月到次月1日。
有些头大,不会写…
...全文
321 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
TOFEMALE 2018-08-02
  • 打赏
  • 举报
回复
会影响性能,最好在前端进行处理
吉普赛的歌 2018-07-31
  • 打赏
  • 举报
回复
引用 5 楼 a504191479 的回复:
[quote=引用 1 楼 yenange 的回复:]
不太明白你的逻辑, 但应该不需要触发器, 加 2 个计算列就可以了, 类似:
alter table tableName add gl_result AS case when tzrq>getdate() then gl+1 else gl end


具体的细节你自己去完成吧

emmm,为什么计算列结果是在gl_result列显示,而不是在gl列更改..[/quote]
直接更改有个问题, 就是时间不断在变, 比如今天的工龄是1年, 明天也许就是2年了, 必须有一个参照物。
如果你的表里, 有参加工作的起始时间, 那么你可以按照规则, 直接把工龄变成计算列, 不需要任何的计算、更新就是真正的工龄了。
a504191479 2018-07-31
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
不太明白你的逻辑, 但应该不需要触发器, 加 2 个计算列就可以了, 类似:
alter table tableName add gl_result AS case when tzrq>getdate() then gl+1 else gl end


具体的细节你自己去完成吧

emmm,为什么计算列结果是在gl_result列显示,而不是在gl列更改..
a504191479 2018-07-31
  • 打赏
  • 举报
回复
引用 6 楼 yenange 的回复:
[quote=引用 5 楼 a504191479 的回复:]
[quote=引用 1 楼 yenange 的回复:]
不太明白你的逻辑, 但应该不需要触发器, 加 2 个计算列就可以了, 类似:
alter table tableName add gl_result AS case when tzrq>getdate() then gl+1 else gl end


具体的细节你自己去完成吧

emmm,为什么计算列结果是在gl_result列显示,而不是在gl列更改..[/quote]
直接更改有个问题, 就是时间不断在变, 比如今天的工龄是1年, 明天也许就是2年了, 必须有一个参照物。
如果你的表里, 有参加工作的起始时间, 那么你可以按照规则, 直接把工龄变成计算列, 不需要任何的计算、更新就是真正的工龄了。[/quote]
好的,谢谢
RINK_1 2018-07-30
  • 打赏
  • 举报
回复
我觉得你这个问题的关键应该是定时触发,比如通过作业来实现,而且触发的时间点也很有讲究,触发器不合适。 但是,你那个具体的计算逻辑我觉得有漏洞,比如调整日期是2018年12月份,同时总共天数-365正好是30,那调整天数就变成了2019年1月份,难道到2019年1月份又再次进行计算,然后就一直后续每月循环下去?
a504191479 2018-07-30
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
不太明白你的逻辑, 但应该不需要触发器, 加 2 个计算列就可以了, 类似:
alter table tableName add gl_result AS case when tzrq>getdate() then gl+1 else gl end


具体的细节你自己去完成吧

好的我去琢磨一下,谢谢
吉普赛的歌 2018-07-30
  • 打赏
  • 举报
回复
不太明白你的逻辑, 但应该不需要触发器, 加 2 个计算列就可以了, 类似:
alter table tableName add gl_result AS case when tzrq>getdate() then gl+1 else gl end


具体的细节你自己去完成吧
a504191479 2018-07-30
  • 打赏
  • 举报
回复
引用 3 楼 RINK_1 的回复:
我觉得你这个问题的关键应该是定时触发,比如通过作业来实现,而且触发的时间点也很有讲究,触发器不合适。

但是,你那个具体的计算逻辑我觉得有漏洞,比如调整日期是2018年12月份,同时总共天数-365正好是30,那调整天数就变成了2019年1月份,难道到2019年1月份又再次进行计算,然后就一直后续每月循环下去?

是我讲的不清楚,当总共天数大于270时,调整时间必定加一年,谢谢指出
第1章 窗体与界面设计 1 1.1 菜单应用 2 实例001 在系统菜单中添加菜单项 2 实例002 带历史信息的菜单 3 实例003 菜单动态合并 4 实例004 像“开始”菜单一样漂亮的菜单 5 实例005 多彩的菜单 6 实例006 可以拉伸的菜单界面 8 1.2 工具栏设计 9 实例007 带背景的工具栏 9 实例008 浮动工具栏 10 1.3 状态栏设计 11 实例009 在状态栏中显示检查框 11 实例010 带进度条的状态栏 12 实例011 状态栏中加入图标 13 1.4 导航菜单界面 14 实例012 OutLook界面 14 实例013 带导航菜单的主界面 15 实例014 图形化的导航界面 16 1.5 特色程序界面 18 实例015 类QQ的程序界面 18 实例016 类似Windows XP的程序界面 20 实例017 以图形按钮显示的界面 21 实例018 以树型显示的程序界面 23 实例019 以XPManifest组件显示界面 24 实例020 动态按钮的窗体界面 25 1.6 特殊形状的窗体 26 实例021 非矩形窗体 26 实例022 建立字体形状窗体 28 1.7 多媒体光盘 29 实例023 自动启动的多媒体光盘程序 29 实例024 为触摸屏程序添加虚拟键盘 30 实例025 触摸屏系统 31 1.8 窗体效果 33 实例026 半透明渐显窗体 33 实例027 窗口颜色的渐变 34 实例028 带背景的窗体 35 实例029 为窗体增加边框 36 1.9 窗体动画 37 实例030 窗体中的滚动字幕 37 实例031 动画显示窗体 38 实例032 制作闪烁的窗体 39 实例033 直接在窗体上绘图 40 实例034 动画形式的程序界面 41 实例035 以时钟显示界面窗体 42 1.10 标题栏窗体 44 实例036 标题栏上的按钮 45 实例037 使窗体标题栏文字右对齐 47 实例038 没有标题栏但可以改变大小的窗口 48 1.11 设置窗体位置 49 实例039 不可移动的窗体 49 实例040 设置窗体在屏幕中的位置 50 实例041 始终在最上面的窗体 51 1.12 设置窗体大小 52 实例042 限制窗体大小 52 实例043 获取桌面大小 53 实例044 组件大小随窗体的改变而改变 53 实例045 在窗口间移动按钮 54 实例046 如何实现Office助手 55 1.13 窗体控制技术 56 实例047 在关闭窗口前加入确认对话框 56 实例048 程序在循环中响应界面操作 57 实例049 使用任意组件拖动窗体 58 实例050 动态创建窗体和释放窗体 59 实例051 修改提示字体及颜色 60 1.14 其他技术 61 实例052 窗口融合技术 61 实例053 给MDI窗体加背景 62 实例054 如何关闭MDI类型窗体中的子窗体 63 实例055 向提示框中添加图标 64 第2章 控件应用 67 2.1 TEdit控件应用典型实例 68 实例056 从右至左输入数据 68 实例057 为TEdit控件添加列表选择框 69 实例058 只允许输入数字的TEdit组件 70 2.2 TSpeedButton控件应用典型实例 71 实例059 在TSpeedButton按钮中显示图标 71 实例060 折行显示按钮标题 72 2.3 TMemo控件应用典型实例 73 实例061 设置TMemo组件的边界 73 实例062 TMemo组件的光标定位 74 实例063 得到TMemo中的可见行数 75 2.4 TListBox控件应用典型实例 76 实例064 在TListBox组件间交换数据 76 实例065 为TListBox添加水平滚动条 77 实例066 将数据库数据添加到组合框中 78 实例067 借助绑定控件实现数据选择录入 79 2.5 TListView控件应用典型实例 80 实例068 TListView列表拒绝添加重复信息 80 实例069 将数据库数据添加到TListView控件 82 实例070 用TListView控件制作导航界面 83 实例071 在TListView控件中对数据排序或统计 84 实例072 在TListView组件中绘制底纹 86 实例073 在列表视图中拖动视图项 87 2.6 TTreeView控件应用典型实例 88 实例074 将数据库数据显示到树视图中 88 实例075 用TTreeView控件制作导航界面 90 实例076 TTreeView组件遍历磁盘目录 91 实例077 TTreeView组件在数据库中的应用 92 2.7 TStringGrid控件应用典型实例 94 实例078 程序运行时对
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧