CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  数据库相关

MSSQL数据库中表字段类型timestamp的问题

楼主pbsql(风云)2002-06-10 11:52:15 在 PowerBuilder / 数据库相关 提问

1.timestamp类型的字段的具体含义是什么?  
  2.数据窗口中怎么使用它? 问题点数:100、回复次数:19Top

1 楼kuangtb(筐筐)回复于 2002-06-10 12:43:33 得分 20

timestamp  
  timestamp   这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp   一般用作给表行加版本戳的机制。存储大小为   8   字节。  
   
  注释  
  Transact-SQL   timestamp   数据类型与在   SQL-92   标准中定义的   timestamp   数据类型不同。SQL-92   timestamp   数据类型等价于   Transact-SQL   datetime   数据类型。    
   
  Microsoft?   SQL   Server?   将来的版本可能会修改   Transact-SQL   timestamp   数据类型的行为,使它与在标准中定义的行为一致。到那时,当前的   timestamp   数据类型将用   rowversion   数据类型替换。  
   
  Microsoft?   SQL   Server?   2000   引入了   timestamp   数据类型的   rowversion   同义词。在   DDL   语句中尽可能使用   rowversion   而不使用   timestamp。rowversion   受数据类型同义词行为的制约。有关更多信息,请参见数据类型同义词。  
   
  在   CREATE   TABLE   或   ALTER   TABLE   语句中,不必为   timestamp   数据类型提供列名:  
   
  CREATE   TABLE   ExampleTable   (PriKey   int   PRIMARY   KEY,   timestamp)  
   
  如果没有提供列名,SQL   Server   将生成   timestamp   的列名。rowversion   数据类型同义词不具有这样的行为。指定   rowversion   时必须提供列名。  
   
  一个表只能有一个   timestamp   列。每次插入或更新包含   timestamp   列的行时,timestamp   列中的值均会更新。这一属性使   timestamp   列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改   timestamp   值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。  
   
  不可为空的   timestamp   列在语义上等价于   binary(8)   列。可为空的   timestamp   列在语义上等价于   varbinary(8)   列。  
   
  在数据窗口中使用跟datetime类型没有区别。Top

2 楼pbsql(风云)回复于 2002-06-10 13:11:03 得分 0

kuangtb(筐筐):谢谢,可数据窗口的数据源中根本不能加入该字段:  
  SELECT   column   has   unsupported   data   type.Top

3 楼hyxdtj(求真)回复于 2002-06-10 14:41:30 得分 0

在"搜索"中输入条件查找,多的是...Top

4 楼pbsql(风云)回复于 2002-06-10 16:52:00 得分 0

查了,没有满意的结果。  
   
  PB中该怎么把它取出来转换为时间呢?Top

5 楼pbsql(风云)回复于 2002-06-10 17:11:10 得分 0

这样的一些数据究竟是什么含义:  
  0x0000000000000458  
  0x0000000000000459  
  0x000000000000045A  
  0x000000000000045C  
  ...  
  ???  
  是不是每更新一条记录,这条记录的时间戳字段就会自动变为整个表中的最大值?Top

6 楼pbsql(风云)回复于 2002-06-11 07:51:51 得分 0

UPTop

7 楼liuyxit(初学Oracle)回复于 2002-06-11 09:16:56 得分 20

我来说一下吧!看能否帮上忙:  
  1.它是标识数据类型  
      从字面上看,它是“时间戳”的意思,但timestamp数据类型与日期、时间并没有任何关系。它的数值格式类似于0x000000000000025A。一个表中只能有一个timestamp类型的字段。一旦将表中的一个字段指定为timestamp数据类型,该字段的值就不用设置了,它会随表中记录内容的修改而自动更新,而且在整个数据库范围都是惟一的。  
   
  2.在pb的dw中用时:只在当它作为主键时,加入它作为更新用的主键(可不用显示出来)保存提交时它由数据库自动赋值。  
   
  呵呵!!不知说明白没有。:-)Top

8 楼pbsql(风云)回复于 2002-06-11 10:39:49 得分 0

现在说说我的目的吧:加时间戳字段主要是想知道用户最近都改动了(新增、修改)哪些记录,以便作其它操作,但不能将其加入到数据窗口中,有其它方法吗?Top

9 楼liuyxit(初学Oracle)回复于 2002-06-11 11:56:06 得分 10

我认为可以在系统代码里做嘛!  
  1.如果只是一张表,做个触发器,改动datetime字段为改动时间就行了。  
   
  2.如果是多个表,就在代码上加入一个通用函数和一个日志表,通过调用该函数了增加日志表记录。Top

10 楼pbsql(风云)回复于 2002-06-11 12:03:47 得分 0

liuyxit(都随风!都随风!心随你动!):你那样当然可以实现,但要是能利用timestamp岂不是可以减少很多代码?Top

11 楼qianfl(毛毛熊)回复于 2002-06-11 16:25:14 得分 0

我觉得还是尽量用一些比较通用的数据类型较好,我们现在已经连DATE类型都不用了,改成STRING了,就因为不同DBMS之间的DATE类型不兼容,无法移植程序,如果你的程序没有移值的可能性那另当别论Top

12 楼pbsql(风云)回复于 2002-06-26 18:55:35 得分 0

继续吧Top

13 楼xjbs(大鱼)回复于 2002-06-26 19:12:13 得分 0

用时间戳你怎么去看他是最近改动的?  
  我觉得还是加一个表专门记录最近改动的数据为好!  
  或是给每一个表的加一日期时间字段!记录更新时间  
  !Top

14 楼pbsql(风云)回复于 2002-06-26 19:38:20 得分 0

xjbs(大鱼)   (     ):那样做工作量太大。最近改动的时间戳值应该大些吧?Top

15 楼SOFTFUN_CSDN(不知所云~)回复于 2002-06-30 23:56:05 得分 10

建议不要使用~  
  timestamp本来就是DBMS提供的,一般拒绝用户操作~  
  另外PB与DBMS的接口驱动一般都不会支持该数据类型的~Top

16 楼liulee(流方)回复于 2002-07-01 00:16:00 得分 20

这是dbms提供的行时间戳,不建议使用。  
  有一个场合可以使用:  
  若需要生成一个流水号,可以建立一个流水号表并加入timestamp类型列,通过存储过程得到最新数字(update前比较是否是select时的值,并循环取值),这样可以在sql   server中建立oracle的sequence方法,但与事务相关,还是没有oracle中的sequence方便,搞不懂为什么ms   sql   server不支持sequence?sybase都支持的。  
   
  当然,ms   sql   server也有自己的主键机制,譬如设置default为   newid()函数并转换就可以得到32位字串的全球唯一编码,而且可以事先通过存储过程得到,不过就是太长了而已。  
   
  Top

17 楼pbworm(pb菜鸟)回复于 2002-07-01 09:53:36 得分 0

作个标记Top

18 楼pbworm(pb菜鸟)回复于 2002-07-01 09:54:51 得分 0

做个标记Top

相关问题

  • SQL数据库中设计表字段名用中文可好?
  • 对两个数据库的表字段查询
  • 取得dataGrid对应的数据库里的表字段名
  • 如何将数据库表字段自动生成ttx文件。例如Access数据库
  • 如何在ado里面动态创建数据库和表、字段?
  • 数据库表字段名设定为汉字,有何利弊?谢谢
  • mssql server数据库问题?
  • 在数据库开发过程中,数据库、表、字段、视图、存储过程等的命名规则,谁有这方面的文档,谢谢!
  • 如何取数据库服务器(通过ODBC和客户连接)的时间并写入表字段?
  • 请问:用JDBC连接数据库时,多表查询怎样区分各表字段名?

关键词

  • 数据
  • 字段
  • 数据库
  • 函数
  • 代码
  • 修改
  • dbms
  • pb
  • timestamp
  • 类型

得分解答快速导航

  • 帖主:pbsql
  • kuangtb
  • liuyxit
  • liuyxit
  • SOFTFUN_CSDN
  • liulee

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo