时效性sql如何写

OICQshenshi 2008-06-11 03:29:14
我想实现insert table1 列1 value ('A') 后过了2分钟后如果 列2 的值Update了,那么就把 列1的值更新为'B',请教该如何写这个T-sql语句
...全文
207 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhiguo2008 2008-06-25
  • 打赏
  • 举报
回复
Create trigger TR_1 ON T_1 
FOR UPDATE
AS
IF EXISTS(SELECT 1 FROM T_1 A,DELETED B WHERE A.id=B.id AND DATEDIFF(mi,A.CREATEDATE,GETDATE()) >=2)
AND UPDATE(F0020)
BEGIN
UPDATE A SET A.F0010='B'
FROM T_1 A,DELETED B
WHERE A.ID=B.ID
END
li_yaoming 2008-06-16
  • 打赏
  • 举报
回复
执行完插入语句后,执行
WAITFOR DELAY '00:00:02'
然后判断是否更新,执行相应的操作

不过最好使用触发器
muzhenxing013 2008-06-16
  • 打赏
  • 举报
回复
不是很难,执行完了以后,先把触发器禁用,然后用DATEADD函数延迟,在把触发器启用,如果不对的话 rollback tran就ok
kuangdp 2008-06-16
  • 打赏
  • 举报
回复
DROP TABLE T_1
GO

Create table T_1
(
id INT IDENTITY(1,1) PRIMARY KEY,
createdate datetime default getdate(),
f0010 char(1),
f0020 int
)
GO

Create trigger TR_1 ON T_1
FOR UPDATE
AS
IF EXISTS(SELECT 1 FROM T_1 A,DELETED B WHERE A.id=B.id AND DATEDIFF(ss,A.CREATEDATE,GETDATE()) <=2) --手误了
AND UPDATE(F0020)
BEGIN
UPDATE A SET A.F0010='B'
FROM T_1 A,DELETED B
WHERE A.ID=B.ID
END

INSERT INTO T_1(F0010,F0020)
SELECT 'A',1

WAITFOR DELAY '00:00:01'
GO

UPDATE A SET A.F0020=2
FROM T_1 A
WHERE ID=1

SELECT * FROM T_1 WHERE ID=1
GO


INSERT INTO T_1(F0010,F0020)
SELECT 'C',1

WAITFOR DELAY '00:00:03'

UPDATE A SET A.F0020=2
FROM T_1 A
WHERE ID=2

SELECT * FROM T_1 WHERE ID=2
GO
kuangdp 2008-06-16
  • 打赏
  • 举报
回复
DROP TABLE T_1
GO

Create table T_1
(
id INT IDENTITY(1,1) PRIMARY KEY,
createdate datetime default getdate(),
f0010 char(1),
f0020 int
)
GO

Create trigger TR_1 ON T_1
FOR UPDATE
AS
IF EXISTS(SELECT 1 FROM T_1 A,DELETED B WHERE A.id=B.id AND DATEDIFF(MM,A.CREATEDATE,GETDATE())<=2)
AND UPDATE(F0020)
BEGIN
UPDATE A SET A.F0010='B'
FROM T_1 A,DELETED B
WHERE A.ID=B.ID
END

INSERT INTO T_1(F0010,F0020)
SELECT 'A',1

WAITFOR DELAY '00:00:01'
GO

UPDATE A SET A.F0020=2
FROM T_1 A
WHERE ID=1

SELECT * FROM T_1 WHERE ID=1
GO


INSERT INTO T_1(F0010,F0020)
SELECT 'C',1

WAITFOR DELAY '00:00:03'

UPDATE A SET A.F0020=2
FROM T_1 A
WHERE ID=2

SELECT * FROM T_1 WHERE ID=2
GO
Andy-W 2008-06-14
  • 打赏
  • 举报
回复
学习
friendlyFour 2008-06-13
  • 打赏
  • 举报
回复
实效性[Quote=引用 7 楼 ws_hgo 的回复:]
当改变时直接搞个触发器就够了
还搞个2分钟干吗?
[/Quote]
cxmcxm 2008-06-13
  • 打赏
  • 举报
回复
这里的问题最好用开发工具如vb,dephi等来完成.
ws_hgo 2008-06-13
  • 打赏
  • 举报
回复
当改变时直接搞个触发器就够了
还搞个2分钟干吗?
solefan 2008-06-13
  • 打赏
  • 举报
回复
触发器 搞定

不过可能有时会出个小问题

呵呵

很难找
分治实践 2008-06-12
  • 打赏
  • 举报
回复
触发器.能实现.
不过在触发器里面要有个判断.insert table1 列1 value ('A') 的时间是不是超过两分钟了.
但是像是你这样没有字段来保存插入日期有点难度.你可以考虑加个这样的字段.问题就解决了
arrow_gx 2008-06-11
  • 打赏
  • 举报
回复
1、在表里面加入一个时间类型的字段 T1,记录 insert table1 列1 value ('A') 的时间
2、用触发器实现,在 列2 update 的时候,同时更新 列1
3、具体细节:在触发器里面用
columns_updated()判断更新列是否是'列2'(看一下帮助就清楚了),
updated('T1') 的时间 距离触发器执行的当前时间,是否是在两分钟之内
-晴天 2008-06-11
  • 打赏
  • 举报
回复
在表中添加一列,datetime类型,默认值为getdate(),在插入时保存插入时间.
在表上设置一个for触发器,基于update,检查deleted表中的该时间值,与当前时间相减,如果小于两分钟,则进一步更新列1的值.
lff642 2008-06-11
  • 打赏
  • 举报
回复
可以考虑用触发器实现,在 列2 update 的时候,同时更新 列1
arrow_gx 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 OICQshenshi 的帖子:]
我想实现insert table1 列1 value ('A') 后过了2分钟后如果 列2 的值Update了,那么就把 列1的值更新为'B',请教该如何写这个T-sql语句
[/Quote]

可以考虑用触发器实现,在 列2 update 的时候,同时更新 列1
wgzaaa 2008-06-11
  • 打赏
  • 举报
回复
容易出问题,延时触发可以考虑
1、ETL(Extract-Transform-Load的缩,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以掌握一个ETL工具的使用,必不可少。Kettle作为ETL工具是非常强大和方便的。Kettle是一款国外开源的ETL工具,纯java编,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。2、Clickhouse 是俄罗斯的“百度”Yandex公司在2016年开源的,一款针对大数据实时分析的高性能分布式数据库,与之对应的有hadoop生态hive,Vertica和百度出品的palo。这是战斗民族继nginx后,又开源的一款“核武器”。Hadoop 生态体系解决了大数据界的大部分问题,当然其也存在缺点。Hadoop 体系的最大短板在于数据处理时效性。基于 Hadoop 生态的数据处理场景大部分对时效要求不高,按照传统的做法一般是 T + 1 的数据时效。即 Trade + 1,数据产出在交易日 + 1 天。ClickHouse 的产生就是为了解决大数据量处理的时效性。独立于Hadoop生态圈。3、Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。 Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:01、集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid。02、通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。03、提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。 基于Kettle+Clickhouse+Superset构建亿级大数据实时分析平台课程将联合这三大开源工具,实现一个强大的实时分析平台。该系统以热门的互联网电商实际业务应用场景为案例讲解,对电商数据的常见实战指标处理使用kettle等工具进行了详尽讲解,具体指标包括:流量分析、新增用户分析、活跃用户分析订单分析、团购分析。能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。项目代码也是具有很高的商业价值的,大家可以根据自己的业务进行修改,便可以使用。本课程包含的技术:开发工具为:IDEAKettleClickhouseSupersetBinlogCanalKafkaHbaseHadoopZookeeperFlinkSpringBootSpringCouldPythonAnconaMySQL等 课程亮点:1.与企业对接、真实工业界产品2.强大的ETL工具Kettle全流程讲解实现3.ClickHouse高性能列式存储数据库4.Superset现代化的企业级BI可视化5.数据库实时同步解决方案6.集成Flink实时数据转换解决方案7.主流微服务SpringBoot后端系统8.互联网大数据企业热门技术栈9.支持海量数据的实时分析10.支持全端实时数据分析11.全程代码实操,提供全部代码和资料12.提供答疑和提供企业技术方案咨询 

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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