我在我的數據庫中有一個Employee表。值通過asp.net頁面插入到此表中。我想在員工插入時觸發一個觸發器,只有當用戶具有「id = 1110」時才允許插入,所有其他用戶插入必須被拒絕。我不知道如何傳遞用戶標識作爲觸發參數。任何人都可以請幫助我?將參數傳遞給通過asp.net的SQL觸發器
0
A
回答
0
觸發器不能傳遞參數 - 你必須對數據庫的操作範圍內工作。因此,除非Employee表具有引用創建更改的用戶的ID的CreateBy或LastUpdateBy,否則您需要將INSERT包裝到存儲過程中,該存儲過程將在執行INSERT之前執行該檢查。
如果碰巧你的Employee表中有一個包含執行更改的用戶的ID的CreateBy,然後觸發,例如下面這應該工作:
CREATE TRIGGER tg_Employees_RegisterAdminOnly ON dbo.Employees
AFTER INSERT AS
BEGIN
IF EXISTS (SELECT * FROM INSERTED WHERE CreateBy <> 1110) BEGIN
RAISERROR('Unauthorized registration', 16, 1)
ROLLBACK
RETURN
END
END
GO
+0
謝謝賈森....我要包裝插入存儲過程.. :-) –
0
您可以在創建後觸發調用存儲過程在以下C#代碼:
--table|start
CREATE TABLE dbo.z_Employee (ID INT IDENTITY(1, 1), Name VARCHAR(100), UserModify SMALLINT)
--table|end
--stored procedure for inserting new employee|start
CREATE PROC dbo.z_AddEmployee(@Name VARCHAR(100), @UserModify SMALLINT)
AS
--for debugging|start
--DECLARE @Name VARCHAR(100)
-- , @UserModify SMALLINT = 1112
--for debugging|end
INSERT dbo.z_Employee (Name, UserModify)
VALUES (@Name, @UserModify)
--for debugging|start
--SELECT e.*
--FROM dbo.z_Employee e WITH(NOLOCK)
--for debugging|end
--stored procedure for inserting new employee|end
--trigger for disallowing inserts|start
CREATE TRIGGER dbo.z_DoNotAllowOtherUser
ON dbo.z_Employee
FOR INSERT
AS
IF EXISTS
(SELECT TOP 1 i.ID
FROM INSERTED i
WHERE i.UserModify <> 1110)
BEGIN
DELETE e
FROM dbo.z_Employee e WITH(NOLOCK)
JOIN INSERTED i ON i.ID = e.ID
END
--trigger for disallowing inserts|end
相關問題
- 1. 通過asp.net將參數傳遞給sql觸發器
- 2. 通過事件觸發器/按鈕將參數傳遞給javascript函數
- 3. 通過QtGui.QAction傳遞參數給觸發方法
- 4. 通過url將參數傳遞給bookmarklet
- 5. 通過FormSet將參數傳遞給ModelForm
- 6. 是否可以通過Mysql觸發器將值傳遞給php?
- 7. 將參數傳遞給angularjs過濾器
- 8. asp.net通過jQuery將發送者傳遞給服務器
- 9. 將參數傳遞給腳本創建觸發器
- 10. 我可以將參數傳遞給ClearCase觸發器嗎?
- 11. 通過觸發器和JSON調用傳遞多個參數
- 12. 如何通過命令行將參數傳遞給sql腳本
- 13. 如何通過Powershell將參數傳遞給SQL腳本
- 14. 我可以將參數傳遞給外部(CLR)SQL Server觸發器嗎?
- 15. 如何將參數傳遞給外部(SQLCLR)SQL服務器觸發
- 16. 通過CSS選擇器將參數傳遞給javascript函數
- 17. celerybeat如何通過調度器將參數傳遞給函數?
- 18. 通過WebForm中的Response.Redirect將參數傳遞給MVC控制器
- 19. 通過CodeIgniter中的控制器將參數傳遞給模型
- 20. PostgreSQL的觸發器和傳遞參數
- 21. 通過代碼將參數傳遞給html通過代碼
- 22. 將參數值傳遞給SqlDataSource ASP.NET User.Identity.Name
- 23. 將參數傳遞給URL ASP.NET MVC
- 24. 如何將HTML參數傳遞給ASP.NET?
- 25. 將長參數傳遞給asp.net webapi
- 26. 如何通過Symfony將參數傳遞給控制器?
- 27. 通過加載器將參數傳遞給swf
- 28. 如何通過URL將參數傳遞給Spring控制器?
- 29. 通過使用Laravel將參數傳遞給控制器?
- 30. 通過加載器將參數傳遞給外部swf
當ID 1110從哪裏來? – ninja
你需要在你的觸發器中添加這個條件。 –
1110是來自管理頁面的身份證....管理員登錄到他的頁面,他可以註冊一個新員工...我想檢查管理'1110'是否已執行註冊。 –