簡體   English   中英

Oracle 中的日期時間格式

[英]Date time format in Oracle

我是 sql 的新手,正在研究一個示例。 在我創建的表中,我有評論表:

CREATE TABLE comments (
club       VARCHAR2(60) NOT NULL,
nick         VARCHAR2(35),
msg_date   DATE,
title        VARCHAR2(100) NOT NULL,
director   VARCHAR2(50) NOT NULL,
subject    VARCHAR2(100),
message    VARCHAR2(1500),
valoration NUMBER(2),
CONSTRAINT PK_COMMENTS PRIMARY KEY (nick,msg_date),
CONSTRAINT FK_COMMENTS_MEMBER FOREIGN KEY (nick,club) REFERENCES membership ON DELETE CASCADE,
CONSTRAINT FK_COMMENTS_MOVIES  FOREIGN KEY (title,director) REFERENCES movies,
CONSTRAINT CK_COMMENTS_VAL CHECK (valoration<11) 
);

我被要求創建一個執行以下操作的觸發器:如果評論與已存儲的另一個評論在同一日期到達,則將其注冊為“一秒后”的日期。 我遇到的問題是我不知道如何將“一秒”轉換為日期。 關於如何解決這個問題的任何想法?

msg_date + 間隔 '1' 秒

或者 msg_date + (1/(24*60*60))

然而,這整個場景充滿了危險。 在觸發器中檢查表中的現有消息時,該表可能在其他事務中發生更改,因此這里存在競爭條件的真正風險 - 兩條消息都將現有消息添加 1 秒,然后將具有相同的日期。 無論檢查是在觸發器還是應用程序代碼中,情況都是如此。

如果這是一個真實世界的場景,我會避免觸發,使用時間戳而不是日期,其中精度介於毫秒和納秒之間,並考慮如何處理具有與業務問題相同時間戳的消息的較低風險 - 什么是如果它確實發生的含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM