Warn for DELETE All records
在 SQL Server Management Studio (SSMS) 中執行刪除所有資料時,是不會有任何提醒的!! 例如將 delete * from XX 看成 select * from XX,或者未加篩選條件時,都可以輕易地直接刪除整個資料表的所有資料。 防範類似的悲劇發生,可行做法: SQL Server 定期備份 當發生誤刪資料時,確保可以進行環原。 異動大量資料前,手動備份一次。 自製警告訊息 SSMS (v17.9) 目前沒有類似提醒的設定,不過可以在 delete trigger 加上類似的檢查,預防不小心刪除整個資料表,若真需要全部刪除前,再手動停用 Trigger,執行刪除後再手動啟Trigger。 建立刪除警告的 Trigger FOR DELETE AS BEGIN DECLARE @Count int SET @Count = @@ROWCOUNT; IF @Count >= (SELECT SUM(row_count) FROM sys.dm_db_partition_stats WHERE OBJECT_ID = OBJECT_ID('dbo.MyTable_LOG') AND index_id = 1) BEGIN RAISERROR('Cannot delete all rows at once.',16,1) ROLLBACK TRANSACTION RETURN; END END 停用 Trigger 語法 DISABLE TRIGGER [dbo].[RPTIMG_LOG_delete_trigger] ON [dbo].[RPTIMG_LOG] 啟用 Trigger 語法 ENABLE TRIGGER [dbo].[RPTIMG_LOG_delete_trigger] ON [dbo].[RPTIMG_LOG] 所有資料表,建立預防刪除所有資料的 Trigger /*----------------------------------...