我有一个包含2列的表格:SolarDate
,GregorianDate
我有一个在T-SQL中将格里高利日期转换为日期日期的功能。将行插入此表时,只会填充GregorianDate
列。
我想在插入行时,SolarDate
字段也被填充。
我需要触发吗?还是别的什么?
我该怎么做?
答案 0 :(得分:7)
您可以使用触发器 - 或者只是根据您拥有的功能将SolarDate
定义为计算列。
在这种情况下 - 您需要首先删除已有的列SolarDate
,然后再将其添加为计算列:
ALTER TABLE dbo.YourTable
ADD SolarDate AS dbo.DetermineSolarDate(GregorianDate)
每当您需要该值时,这将不断自动确定SolarDate
,并且您无需为此设置触发器。
答案 1 :(得分: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