Firebird 3.0のストアドプロシージャの戻り値を複数の列のデフォルト値として使用する必要があります。列のデフォルト値としてストアドプロシージャの戻り値を使用する方法はありますか。
私の手順:
CREATE OR ALTER PROCEDURE CURRENTTIME
returns (
stime char(12))
as
begin
sTime = (SELECT trim(Substring(CURRENT_TIMESTAMP FROM 12 FOR 12)) from RDB$
end
だから、私たちは「NewOn」と「LastChangeOn」という名前のいくつかの特定の列の現在時刻を入力する必要があります。私は、Current_Timeと呼ばれるFirebird自体からデフォルトのプロシージャを見つけましたが、ミリ秒は常に '0000'です。 '12:30:10.0000 '悪いことに、私たちのデータベースにはミリ秒が必要です。私自身の手続きは、ミリ秒を私たちに与えていますが、テーブルでは使用できません。テーブルの
例:テーブルは次のように作成されると
CREATE TABLE USER (
FIRSTNAME CHAR(30),
LASTNAME CHAR(50),
IDENT CHAR(40) NOT NULL,
NEWAT DATE DEFAULT Current_Date NOT NULL,
NEWON CHAR(13) DEFAULT Current_Time(3) NOT NULL,
NEWFROM CHAR(25),
LASTCHANGEAT DATE DEFAULT Current_Date NOT NULL,
LASTCHANGEON CHAR(13) DEFAULT Current_Time(3) NOT NULL,
LASTCHANGEFROM CHAR(25)
);
それは私たちだけで0000ミリ秒を与えるのFirebird-自身のプロシージャを呼び出します。私はファイヤーバードの手順のような私の手続きを呼び出そうとしました。また、私は手順で "サスペンド"の有無にかかわらずテストしましたが、違いはありません。
この問題の解決策はまだ見つかりませんでしたので、誰でも私をここで助けることができますか?
これはできません。しかし、私たちのプログラム構造のために 'LASTCHANGEON'がタイムスタンプの列でないのはなぜでしょうか? –
@a_horse_with_no_name私たちはプログラムの構造上、日付と時刻を別々にする必要があります。これは次のとおりです。x – eightball60
適切なタイムスタンプタイプと日付と時刻の情報をvarcharカラムに抽出する2つの計算カラムを持つカラムを作成できます。 –