我在我的SQL數據庫項目中有一個後期部署腳本,它註冊了應該是數據庫一部分的默認值。我希望這個腳本能夠在不改變結果的情況下多次運行,所以如果我需要添加一點修改,我可以手動運行它。SQL冪等
INSERT INTO [UserRole] ([Name])
SELECT 'Regular'
UNION ALL
SELECT 'Admin'
INSERT INTO [UserRight] ([Name])
SELECT 'CanAccessApplicationLogs'
UNION ALL
SELECT 'CanAccessApplicationJobs'
INSERT INTO [UserRoleRight] ([UserRoleId], [UserRightId])
SELECT [Ro].[Id], [Ri].[Id] FROM [UserRight] Ri, [UserRole] Ro
WHERE ([Ro].[Name] = 'Admin' AND
[Ri].[Name] = 'CanAccessApplicationLogs')
OR ([Ro].[Name] = 'Admin' AND
[Ri].[Name] = 'CanAccessApplicationJobs')
我懷疑績效永遠不會是問題,因爲這個腳本只是插入角色和權利。那麼最乾淨的方法是檢查每行是否存在,並只插入那些不在表中的那些?
這很酷!看起來它甚至可以容納你刪除的條目。我的MySQL有點生疏,所以我需要弄清楚如何概括這個。 – sdanzig 2014-12-07 16:02:07
等一下,不,這不是MySQL。重複密鑰我認爲是要走的路。沒有適應我刪除的條目我想。 – sdanzig 2014-12-07 16:20:36