一個專欄中,我有一個2列的表格:SolarDate
,GregorianDate
將數據插入表中的SQL Server中
而且我有轉換公曆日期太陽能日期在T-SQL的功能。當一個行插入到這個表中時,它只會填充GregorianDate
列。
我想插入一行時,SolarDate
字段也填充。
我需要觸發器嗎?還是別的東西?
我該怎麼做?
一個專欄中,我有一個2列的表格:SolarDate
,GregorianDate
將數據插入表中的SQL Server中
而且我有轉換公曆日期太陽能日期在T-SQL的功能。當一個行插入到這個表中時,它只會填充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
你可以使用一個觸發器 - 或者只是基於你有那個函數定義SolarDate
爲計算列。
在這種情況下 - 你需要先刪除該列SolarDate
你已經有了,然後再次將其添加爲計算列:
ALTER TABLE dbo.YourTable
ADD SolarDate AS dbo.DetermineSolarDate(GregorianDate)
這將持續並自動確定SolarDate
每當你需要這個價值,而且你不需要觸發這個工作。
顯示如何填寫一個日期的代碼,然後我們可以提供幫助。 – Hogan
您可以使用觸發器 - 或者只是基於您具有的函數將您的'SolarDate'定義爲**計算列** –