Хранимые процедуры и триггеры в базе данных - PullRequest
0 голосов
/ 17 декабря 2010

что означают хранимые процедуры и триггеры в базе данных? Как я могу создать хранимые процедуры? как я могу сделать триггеры? если у вас есть простые примеры для каждого из них. пожалуйста, помогите :) я знаю только о триггере, который активируется, если действие (вставка, удаление или обновление) нарушает указанные ограничения, но я не знаю, как его создать, поэтому, если у вас есть пример, пожалуйста,

1 Ответ

3 голосов
/ 17 декабря 2010

Думайте о хранимой процедуре как о методе в вашем коде. Он запускает определенный набор инструкций.

Хранимые процедуры созданы, например, для управления сложными наборами данных, с которыми обычно трудно справиться в вашем коде.

Вы можете создать хранимую процедуру с помощью следующих инструкций:

Oracle

CREATE OR REPLACE PROCEDURE P_PROCEDURE_NAME (
    pParameter1 NUMBER
    , pParameter2 VARCHAR2(100 Bytes)
) AS
BEGIN
    -- Procedure code here...
END;

SQL Server

CREATE PROCEDURE cspProcedureName 
    @parameter1 int
    , @parameter2 nvarchar(100)
AS
    -- Procedure code here...

Oracle

Что касается Триггеров , они представляют собой наборы кода, вызываемые при выполнении действия, связанного с соответствующей таблицей. Например, в Oracle нет столбцов INDENTITY, таких как предложения SQL Server. Вместо этого последовательности используются вместе с триггерами для имитации того же самого. Следовательно, вам нужно создать Oracle SEQUENCE, а затем TRIGGER, чтобы обновить поле идентификатора вашей таблицы.

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 Server

Пример триггера в 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

ОТКАЗ

Этот код не был протестирован и может потребовать незначительных изменений для его корректной работы с соответствующей СУБД.

Подводя итог, триггеры в основном используются, как показано здесь, несмотря на то, что есть много других возможных применений, таких как построение истории изменений таблицы, которые произошли в течение времени, хранение всех записей транзакций в таблице истории или лайк. Хранимые процедуры в основном используются для выполнения сложных задач базы данных, где это будет слишком сложно сделать в коде.

...