數據庫中的存儲過程和觸發器意味着什麼? 我如何創建存儲過程? 我該如何頂峯觸發器? 如果你有每個這些簡單的例子。請幫助:) 我知道的只是關於觸發器,如果(插入或刪除或更新)的動作違反指定的限制,但我不知道如何創建,所以再次如果有任何例子請數據庫中的存儲過程和觸發器
0
A
回答
3
想一想存儲過程作爲您的代碼中的方法。它運行一組特定的指令。
存儲過程是爲了管理複雜的數據集而創建的,這些數據在您的代碼中通常會很難處理。
你可以創建一個存儲過程以下指示:
甲骨文
CREATE OR REPLACE PROCEDURE P_PROCEDURE_NAME (
pParameter1 NUMBER
, pParameter2 VARCHAR2(100 Bytes)
) AS
BEGIN
-- Procedure code here...
END;
SQL服務器
CREATE PROCEDURE cspProcedureName
@parameter1 int
, @parameter2 nvarchar(100)
AS
-- Procedure code here...
甲骨文
至於觸發器,它們是調用相關表的動作時調用的代碼集合。例如,在Oracle中,不存在如SQL Server提供的INDENTITY
列。相反,序列與一起使用觸發器來模擬相同。因此,您需要創建一個Oracle SEQUENCE,然後使用TRIGGER來更新您的表的ID字段。
CREATE SEQUENCE SEQ_CUSTOMERS
MINVALUE 1
MAXVALUE 65535
START WITH 1
INCREMENT BY 1;
CREATE OR REPLACE TRIGGER TRG_CUSTOMERS_INSERT
BEFORE INSERT
ON TBL_CUSTOMERS
FOR EACH ROW
BEGIN
:NEW.CUST_ID := SEQ_CUSTOMERS.NEXTVAL;
END;
SQL服務器
在SQL Server中的觸發器例如將自動更新記錄的更新日期時間。考慮以下幾點:
CREATE TABLE Customers (
CustId int NOT NULL IDENTITY(1, 1) PRIMARY KEY
, CustName nvarchar(100) NOT NULL
, CreatedOn datetime DEFAULT GETDATE()
, LastUpdate datetime NOT NULL
)
GO
CREATE TRIGGER trgCustomersUpdt
AFTER UPDATE
ON Customers
AS
update Customers
set LastUpdate = GETDATE()
where CustId = inserted.Custid
GO
免責聲明
此代碼尚未經過測試,並且可能需要小的改動讓它針對其各自的RDBMS正常工作。
概括起來,觸發器主要用於如圖所示這裏,儘管還有許多其他可能的用途,如建立的所發生throught時間表變動的歷史,保持交易的所有記錄成歷史桌子等。存儲過程主要用於執行復雜的數據庫任務,在代碼中這會變得太複雜。
相關問題
- 1. mysql存儲過程和觸發器
- 2. mysql觸發器和存儲過程diff
- 3. 觸發器/用於數據完整性的存儲過程器
- 4. Web應用程序中的觸發器和存儲過程
- 5. 在另一個數據庫上調用存儲過程的運行觸發器
- 6. SQL Server觸發器,存儲過程
- 7. 觸發器調用存儲過程
- 8. PostgreSQL中的存儲過程和觸發器
- 9. MySQL中的觸發器和存儲過程
- 10. H2數據庫中的存儲過程
- 11. 通過表觸發器捕獲存儲過程參數
- 12. 在oracle存儲過程中觸發
- 13. 何處存儲存儲過程/觸發器/ java類?
- 14. 查找未被CRUD存儲過程觸及的數據庫列
- 15. MySQL觸發器和存儲過程複製
- 16. PostgreSQL觸發器和存儲過程不在踢
- 17. BEFORE INSERT觸發器和存儲過程調用(DB2 LUW 9.5)
- 18. 基於觸發器和存儲過程更新彙總表
- 19. 從腳本中跟蹤存儲過程存儲的數據庫
- 20. 具有OSB中的存儲過程的數據庫適配器
- 21. 從存儲過程調用觸發器(ROLLBACK觸發器會發生?)
- 22. 如何獲取存儲過程或觸發器中的結果?
- 23. 存儲過程與MySQL中的觸發器
- 24. 觸發或存儲鎖定和解鎖數據庫15分鐘
- 25. Sql Server數據庫存儲過程在值變爲0時觸發
- 26. 存儲庫模式和存儲過程
- 27. 數據庫觸發器和計算
- 28. 休眠和數據庫觸發器
- 29. 存儲過程VS SQLCLR觸發
- 30. PHP和數據庫:視圖,函數和存儲過程性能
這不是Google的工作。當您搜索時,結合特定數據庫(例如Oracle)進行搜索,因爲語法會有所不同。 – orangepips 2010-12-17 19:57:14
你的知識水平有人沒有創造觸發器的業務。觸發器只能由數據庫專家的開發人員創建,因爲如果寫得不好,它們可能會造成很大的傷害。 – HLGEM 2010-12-17 20:55:26
@HLGEM:我真的不相信OP會收到更好的評論。相反,我認爲OP希望知道SP和TRG是什麼,所以他不會隨時瞭解或學習如何正確使用它們。 – 2010-12-18 04:30:15