将数据插入SQL Server中的表列

时间:2013-01-10 21:38:40

标签: sql-server tsql triggers

我有一个包含2列的表格:SolarDateGregorianDate

我有一个在T-SQL中将格里高利日期转换为日期日期的功能。将行插入此表时,只会填充GregorianDate列。

我想在插入行时,SolarDate字段也被填充。

我需要触发吗?还是别的什么?

我该怎么做?

2 个答案:

答案 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