2013-01-10 49 views
0

一個專欄中,我有一個2列的表格:SolarDateGregorianDate將數據插入表中的SQL Server中

而且我有轉換公曆日期太陽能日期在T-SQL的功能。當一個行插入到這個表中時,它只會填充GregorianDate列。

我想插入一行時,SolarDate字段也填充。

我需要觸發器嗎?還是別的東西?

我該怎麼做?

+0

顯示如何填寫一個日期的代碼,然後我們可以提供幫助。 – Hogan

+2

您可以使用觸發器 - 或者只是基於您具有的函數將您的'SolarDate'定義爲**計算列** –

回答

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 
7

你可以使用一個觸發器 - 或者只是基於你有那個函數定義SolarDate計算列

在這種情況下 - 你需要先刪除該列SolarDate你已經有了,然後再次將其添加爲計算列

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

這將持續並自動確定SolarDate每當你需要這個價值,而且你不需要觸發這個工作。

相關問題