0

2列のテーブルがあります:SolarDateGregorianDate

また、T-SQLでグレゴリオ暦の日付を太陽暦の日付に変換する関数があります。このテーブルに行が挿入されると、塗りつぶしGregorianDate列のみが作成されます。

行を挿入すると、SolarDateフィールドも入力されます。

トリガーする必要がありますか?または別のもの?

そして、どうすればこれを行うことができますか?

4

2 に答える 2

7

トリガーを使用することも、所有している関数に基づいて計算列SolarDateとして定義することもできます。

その場合、最初に既存の列を削除してから、計算列SolarDateとして再度追加する必要があります。

ALTER TABLE dbo.YourTable
ADD SolarDate AS dbo.DetermineSolarDate(GregorianDate)

これにより、その値が必要なときはいつでも自動的に決定さSolarDateれ、これを機能させるためにトリガーを設定する必要はありません。

于 2013-01-10T21:42:39.410 に答える
1

UDFを使用する計算列をテーブルに作成できます。

CREATE FUNCTION ArbSQ
(
    @Num1 INT
)
RETURNS INT
AS
BEGIN

    RETURN POWER(@Num1, 2)

END
GO

CREATE TABLE MyTable
(
    MyNum INT
    ,MySQ AS dbo.ArbSQ(MyNum) 
)

INSERT INTO MyTable
VALUES (1), (2), (3)

SELECT *
FROM MyTable

この例(スカラーUDFを使用しなくなった)では、計算列をPERSISTEDにすることができます。

CREATE TABLE MyTable
(
    MyNum INT
    ,MySQ AS POWER(MyNum, 2) PERSISTED
)

INSERT INTO MyTable
VALUES (1), (2), (3)

SELECT *
FROM MyTable
于 2013-01-10T21:41:47.560 に答える