2列のテーブルがあります:SolarDate
、GregorianDate
また、T-SQLでグレゴリオ暦の日付を太陽暦の日付に変換する関数があります。このテーブルに行が挿入されると、塗りつぶしGregorianDate
列のみが作成されます。
行を挿入すると、SolarDate
フィールドも入力されます。
トリガーする必要がありますか?または別のもの?
そして、どうすればこれを行うことができますか?
2列のテーブルがあります:SolarDate
、GregorianDate
また、T-SQLでグレゴリオ暦の日付を太陽暦の日付に変換する関数があります。このテーブルに行が挿入されると、塗りつぶしGregorianDate
列のみが作成されます。
行を挿入すると、SolarDate
フィールドも入力されます。
トリガーする必要がありますか?または別のもの?
そして、どうすればこれを行うことができますか?
トリガーを使用することも、所有している関数に基づいて計算列SolarDate
として定義することもできます。
その場合、最初に既存の列を削除してから、計算列SolarDate
として再度追加する必要があります。
ALTER TABLE dbo.YourTable
ADD SolarDate AS dbo.DetermineSolarDate(GregorianDate)
これにより、その値が必要なときはいつでも自動的に決定さSolarDate
れ、これを機能させるためにトリガーを設定する必要はありません。
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