日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Sybase默認時間戳值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個帶有UPDATE_DATETIME列的Sybase表,只要發生插入/更新,就必須更新該列。我已經創建了如下表格

 CREATE TABLE items 
 (
    name VARCHAR(90),
    update_datetime DATETIME DEFAULT GETDATE(),
    price NUMERIC(7,2)
 );

插入后,我可以看到當前日期時間正在更新

 INSERT INTO items(name, price) VALUES ('Apple', 1.29);

但在更新之后,我沒有看到此列得到更新,但在插入過程中更新的舊值仍然存在。

UPDATE items SET price = price - 0.2 WHERE name = 'Apple';

我不確定為什么?請幫助確定原因

推薦答案

假設這是Sybase ASE 15.x/16.x…

列的默認設置僅適用于插入操作。

要使用每個UPDATE語句更新update_datetime列,您需要使用觸發器或將update_datetime重新定義為計算列;對于后者,您通常需要定義一個函數調用,該函數調用引用您預期將始終使用UPDATE語句修改的表中的另一列,例如:

CREATE TABLE items 
(name             VARCHAR(90)
,price            NUMERIC(7,2)
,ts               timestamp
,update_datetime  compute dateadd(ss,0*ts,getdate()) materialized
)

注意:計算列定義必須出現在計算列中引用的列之后;在這種情況下,update_datetime必須列在ts

之后

timestamp數據類型是一種特殊的Sybase ASE數據類型;用于定義列時,ASE將在每次修改/更新行的任何部分時自動更新該列:

好處:我們不需要事先知道哪些列可能被更新(放在計算列定義中)
缺點:我們向表中添加一個8字節的timestamp

由于ts列總是在UPDATE語句上修改,并且timestamp值以8字節二進制形式存儲,因此我們可以用*0來求反它的值;然后將得到的0秒(ss)與getdate()相加,為update_datetime列派生一個新值;Net Result:update_datetime用針對此行應用的每個UPDATE語句的日期時間進行更新。

這篇關于Sybase默認時間戳值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:errorSybaseDEFAULTtimestampvalue exception IT資訊 SQL sybase 技術社區 教程下載 程序員 軟件開
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定