下午所有,我應該添加如果存在我的SQL存儲過程?
我在網頁上有一個按鈕,當用戶點擊時將數據插入到表中。此按鈕有一個消息框分配給它,讓用戶知道記錄已保存,然後將用戶重定向到主頁。這在目前的狀態非常好。
我的問題是,我希望找到一個解決方案,以停止用戶返回到該按鈕所在的頁面並再次插入數據。我需要在數據庫表中重複記錄。
我假設從我在互聯網上讀到的,我應該在我的存儲過程中使用'IF EXISTS'函數。我不是100%確定這將如何與我的存儲過程中使用的當前代碼一起工作?我只想檢查這些記錄是否可用,如果沒有,那麼添加它們或者如果它們已經存在,則不添加這些記錄。
我只是覺得我已經在網上閱讀的文章數量等方面感到困惑。
這裏是我當前的存儲過程:
ALTER PROCEDURE [dbo].[GasNominationsRawData_Insert]
AS SET NOCOUNT ON;
INSERT INTO dbo.GasRawData (timestamp,TagName,Value)
SELECT timestamp AS Interval, Left(Right(TagName,Len(TagName)-5),Len(TagName)-10) As TagName,
CONVERT(decimal(10, 2), ROUND(value, 2)) As Value
FROM
OPENQUERY(IHISTORIAN,'
SET starttime =''yesterday +4h'', endtime =''today +6h''
SELECT timestamp, tagname, value
FROM ihRawData
WHERE tagname = "UMIS.99FC9051.F_CV"
OR tagname = "UMIS.99F851C.F_CV"
OR tagname = "UMIS.35GTGAS.F_CV"
OR tagname = "UMIS.99XXG546.F_CV"
AND timestamp BETWEEN ''timestamp'' and ''timestamp''
AND SamplingMode =Calculated
AND CalculationMode =Average
AND IntervalMilliseconds =1h
ORDER BY tagname, timestamp
')
任何幫助或建議,將不勝感激。
關注貝蒂。
下午JNK,創建一個唯一的索引我覺得聽起來不錯。不過,我只想檢查它是否會對一些示例記錄起作用。我在DB中的表格列是'timestamp','tagname'和'Value'。 DB中的示例記錄(僅適用於兩個標籤)如下所示:(時間戳,標記名,值)27/10/2011 05:00 99F851C 0.03,27/10/2011 06:00 99F851C 0.03,27/10/2011 05:00 99FC9051 14.62,27/10/2011 06:00 99FC9051 13.66。請參閱下一部分的評論... – Betty
本質上會有重複的'時間戳',因爲我的查詢從每天早上05:00到當前日期06:00爲每個標記拉回小時間隔。所以我需要確保重複項不是個人'時間戳'+'標記名'的重複項。 CREATE UNIQUE INDEX DupRecords ON GasRawData(時間戳,標記名)是否工作? – Betty
它應該,是的。 – JNK