返回顶部
首页 > 资讯 > 数据库 >SQL Server中怎么实现时间戳功能
  • 653
分享到

SQL Server中怎么实现时间戳功能

2024-04-02 19:04:59 653人浏览 泡泡鱼
摘要

SQL Server中怎么实现时间戳功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.基本概念时间戳:数据库中自动生成的唯

SQL Server中怎么实现时间戳功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.基本概念

时间戳:数据库中自动生成的唯一二进制数字,与时间和日期无关的, 通常用作给表行加版本戳的机制。存储大小为 8个字节。

每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新操作时,该计数器值就会增加。该计数器是数据库时间戳。这 可以跟踪数据库内的相对时间,而不是时钟相关联的实际时间。一个表只能有一个 timestamp 列。每次修改或插入包含 timestamp 列的行 时,就会在 timestamp 列中插入增量数据库时间戳值。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任 何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标 中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。

使用某一行中的 timestamp 列可以很容易地确定该行中的任何值自上次读取以后是否发生了更改。如果对行进行了更改,就会更新该时间戳值。如果没有对行进行更改,则该时间戳值将与以前读取该行时的时间戳值一致。若要返回数据库的当前时间戳值,请使用 @@DBTS。

2.时间戳的作用

在控制并发时起到作用:

用户A/B同时打开某条记录开始编辑,保存是可以判断时间戳,因为记录每次被更新时,系统都会自动维护时间戳,所以如果保存时发现取出来的时间戳与数据库中的时间戳不相等,说明在这个过程中记录被更新过,这样的话可以防止别人的更新被覆盖。

3.时间戳的应用

简单说一下,timestamp 主要是记录该行的最后修改时间戳,注意,这个时间戳是不可以转换为时间的,只能标注该行修改了。

有 什么用呢?通常是用在数据增量更新方面,比如说,我从该表复制数据到另外一个表,但是如果我想只复制更新过的,那么从最后一次更新的时候,记录最大的 timestamp的值,然后在当前更新的时候,只要where条件找出大于最后一次更新的 timestamp 值的所有行。然后抽取到更新过的数据,进行复制到另外一个服务器,这就是增量更新用到的。

4.在SQL中的应用例子

(微软的建议 -- timestamp 语法已被取代,在 DDL 语句,请尽量使用 rowversion 而不是 timestamp。未来的 Microsoft sql Server 版本将移除这项功能。

参见Http://msdn.microsoft.com/zh-cn/library/ms182776.aspx)

rowversion 就是timestamp

丢失更新的解决方法如下:

丢失更新概念:当用户同时修改一行数据,他们先读取数据,放在前端进行修改,当修改后,再提交数据,这样最后提交的数据会覆盖先前提交的数据,这样就造成了丢失更新。

长话短说,介绍防止丢失更新的方法: 使用rowversion 时间戳。每次更新的时候,mssql都会自动的更新rowversion的值,若一行在读前与更新前的值前后不一致,就说明有其他的事务更新了此列,这样就可以不更新此列,从而防止了丢失更新的情况。

例子 :

先创建一个表:

declare table tmp(a varchar(10),b rowsversion)insert into tmp(a) values( 'abc')

事务A:(新建查询 执行下列代码)

declare @rv rowversionselect @rv=b from tmp where a='abc'waitfor delay '00:00:05' --休息5秒update tmp set a='xyz' where b=@rvGo

事务B: (再新建查询 执行下列代码)

declare @rv rowversionselect @rv=b from tmp where a='abc'update tmp set a='aaa' where b=@rvgo

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网数据库频道,感谢您对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: SQL Server中怎么实现时间戳功能

本文链接: https://lsjlt.com/news/57931.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL Server中怎么实现时间戳功能
    SQL Server中怎么实现时间戳功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.基本概念时间戳:数据库中自动生成的唯...
    99+
    2024-04-02
  • sql server中实现一个unix时间戳函数
    本篇文章给大家分享的是有关sql server中实现一个unix时间戳函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。直接上代码:CREAT...
    99+
    2024-04-02
  • SQL Server中怎么实现复制功能
    今天就跟大家聊聊有关SQL Server中怎么实现复制功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。但我觉得这个功能用来设置备份服务器或测试服务...
    99+
    2024-04-02
  • 怎么在PHP中实现字符串转时间戳的功能
    这篇文章主要讲解了“怎么在PHP中实现字符串转时间戳的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在PHP中实现字符串转时间戳的功能”吧!一、PHP 中时间戳的概念在 PHP 中,...
    99+
    2023-07-05
  • sql时间戳怎么写
    sql 时间戳是一种数据类型,用于存储日期和时间信息,有以下常见场景:跟踪记录创建或修改的时间;记录事件发生的时间;比较时间戳以确定时间差;根据时间范围过滤数据。 如何编写 SQL 时...
    99+
    2024-05-30
  • SQL Server中怎么实现全文搜索功能
    这期内容当中小编将会给大家带来有关SQL Server中怎么实现全文搜索功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一,创建全文目录和唯一索引创建全文索引之前,必须...
    99+
    2024-04-02
  • mysql中datetime转时间戳怎么实现
    在MySQL中,将DATETIME或TIMESTAMP类型的值转换为Unix时间戳(即自1970-01-01 00:00&#...
    99+
    2024-05-24
    mysql
  • mysql毫秒时间戳转时间怎么实现
    在MySQL中,可以使用FROM_UNIXTIME()函数将毫秒时间戳转换为时间。需要注意的是,FROM_UNIXTIME()函数接...
    99+
    2024-05-14
    mysql
  • mysql中怎么实现时间相减功能
    这篇文章给大家介绍mysql中怎么实现时间相减功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确:  [sql]  ...
    99+
    2024-04-02
  • SQL Server中怎么实现多表连接查询功能
    SQL Server中怎么实现多表连接查询功能 ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体代码如下所示:-- ...
    99+
    2024-04-02
  • Vue怎么实现时间轴功能
    这篇文章主要介绍了Vue怎么实现时间轴功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue怎么实现时间轴功能文章都会有所收获,下面我们一起来看看吧。<template>  &...
    99+
    2023-06-29
  • php时间戳怎么实现求差
    PHP时间戳求差——掌握常用时间戳函数时间戳是用于表示日期和时间的一种计数方法。在PHP中,时间戳是指自1970年1月1日零时零分零秒起至当前时间的总秒数。由于时间戳是一种通用的时间表示方法,PHP为我们提供了一系列的函数来方便地应用它们。...
    99+
    2023-05-14
    php
  • php增加时间戳怎么实现
    今天,我们将会介绍如何在 PHP 中增加时间戳。时间戳是一种表示日期和时间的方法,它是从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的总秒数,通常用于记录事件的时间和排序。在 PHP 中,我们可以使用内置的函数来获取...
    99+
    2023-05-14
    php
  • vue怎么实现时间倒计时功能
    本篇内容介绍了“vue怎么实现时间倒计时功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求:做一个剩余支付时间倒计时的效果效果图:代码:...
    99+
    2023-06-20
  • php怎么实现时间戳转换具体时间
    这篇“php怎么实现时间戳转换具体时间”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php怎么实现时间戳转换具体时间”文章吧...
    99+
    2023-07-05
  • 怎么在SQL Server中实现一个模糊查询功能
    怎么在SQL Server中实现一个模糊查询功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.用_通配符查询"_"号表示任意单个字符,该...
    99+
    2023-06-14
  • Java中实现时间与时间戳的转换
    public static void main(String[] args) { // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ...
    99+
    2023-09-30
    java python 开发语言
  • php 怎么实现时间戳转格式
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。php 怎么实现时间戳转格式?php中时间戳和日期格式的转换一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下:e...
    99+
    2016-08-15
    php
  • sql时间戳怎么转换成日期
    在SQL中,可以使用DATE_FORMAT函数来将时间戳转换成日期。以下是一个示例: SELECT DATE_FORMAT(...
    99+
    2024-04-09
    sql
  • PHP时间戳函数实现时间转换和计算功能的方法总结
    PHP时间戳函数是一种非常常用和强大的功能,它可以用于时间的转换和计算。在这篇文章中,我将总结一下PHP时间戳函数的使用方法和一些相关的注意事项。PHP时间戳函数主要有两个:time() 和strtotime()。time()函数返回当前的...
    99+
    2023-11-20
    函数 时间戳 转换
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作