Курс «Мәліметтер қорларын жобалау»



Дата26.09.2022
өлшемі0,94 Mb.
#150749
Байланысты:
Триггерлер

Курс «Мәліметтер қорларын жобалау»


Сақталатын процедуралар, оларды құру, орындау және жою
Құрастарған: ХАА академигі, қауымдастырылған профессор, т.ғ.к. Сауанова К.Т
Электронный адрес k.sauanova@aues.kz

Сақталатын процедуралар (Stored Procedure)- олар байланысқан SQL-операторларының топтары. Сақталатын процедураларды пайдалану мәліметтер қорымен жұмыстың қосымша икемділігін қамтамасыз етеді, өйткені сақталатын процедураларды орындау SQL жеке операторлар тізбегінен әлдеқайда қарапайымдау

Сақталатын процедуралар (Stored Procedure)- олар байланысқан SQL-операторларының топтары. Сақталатын процедураларды пайдалану мәліметтер қорымен жұмыстың қосымша икемділігін қамтамасыз етеді, өйткені сақталатын процедураларды орындау SQL жеке операторлар тізбегінен әлдеқайда қарапайымдау

Құру

CREATE PROCEDURE немесе CREATE PROC

Кесте берілсін делік:

CREATE TABLE Products

(

Id INT IDENTITY PRIMARY KEY,

ProductName NVARCHAR(30) NOT NULL,

Manufacturer NVARCHAR(20) NOT NULL,

ProductCount INT DEFAULT 0,

Price MONEY NOT NULL

);


USE productsdb;
GO
CREATE PROCEDURE ProductSummary AS
SELECT ProductName AS Product, Manufacturer, Price
FROM Products
USE productsdb;
GO
CREATE PROCEDURE ProductSummary AS
BEGIN
SELECT ProductName AS Product, Manufacturer, Price
FROM Products
END;

Процедураны орындау

EXEC немесе EXECUTE командасын пайдаланамыз:


Процедураны жою
DROP PROCEDURE

Параметрі бар процедуралар

USE productsdb;

CREATE TABLE Products

(

Id INT IDENTITY PRIMARY KEY,

ProductName NVARCHAR(30) NOT NULL,

Manufacturer NVARCHAR(20) NOT NULL,

ProductCount INT DEFAULT 0,

Price MONEY NOT NULL

);


Деректерді қосу процедура
USE productsdb;
GO
CREATE PROCEDURE AddProduct
@name NVARCHAR(20),
@manufacturer NVARCHAR(20),
@count INT,
@price MONEY
AS
INSERT INTO Products(ProductName, Manufacturer, ProductCount, Price)
VALUES(@name, @manufacturer, @count, @price)
Процедураны пайдалану
USE productsdb;
DECLARE @prodName NVARCHAR(20), @company NVARCHAR(20);
DECLARE @prodCount INT, @price MONEY
SET @prodName = 'Galaxy C7'
SET @company = 'Samsung'
SET @price = 22000
SET @prodCount = 5
EXEC AddProduct @prodName, @company, @prodCount, @price
SELECT * FROM Products
EXEC AddProduct 'Galaxy C7', 'Samsung', 5, 22000

ТРИГГЕР

CREATE TRIGGER триггер_аты

ON {кесте_аты | көрініс_аты}

{AFTER | INSTEAD OF} [INSERT | UPDATE | DELETE]

AS sql_өрнегі

  • AFTER: тек кестелер үшін анықталады. Әрекет орындалған соң іске қосылады.
  • INSTEAD OF: әрекеттін орнына орындалады - қосу, өзгерту немесе жою - орындалмайды). Кестелен, көріністер үшін құрылады.

INSERT,UPDATE,DELETE триггерлері

CREATE DATABASE productdb;

GO

USE productdb;

CREATE TABLE Products

(

Id INT IDENTITY PRIMARY KEY,

ProductName NVARCHAR(30) NOT NULL,

Manufacturer NVARCHAR(20) NOT NULL,

ProductCount INT DEFAULT 0,

Price MONEY NOT NULL

);


USE productdb;
GO
CREATE TRIGGER Products_INSERT_UPDATE
ON Products
AFTER INSERT, UPDATE
AS
UPDATE Products
SET Price = Price + Price * 0.38
WHERE Id = (SELECT Id FROM inserted)

Триггерды жою/өшіру/қосу

1 DROP TRIGGER Products_INSERT_UPDATE

2 DISABLE TRIGGER Products_INSERT_UPDATE ON Products

3 ENABLE TRIGGER Products_INSERT_UPDATE ON Products

Мысалдар

CREATE DATABASE productsdb;

GO

USE productsdb;

CREATE TABLE Products

(

Id INT IDENTITY PRIMARY KEY,

ProductName NVARCHAR(30) NOT NULL,

Manufacturer NVARCHAR(20) NOT NULL,

ProductCount INT DEFAULT 0,

Price MONEY NOT NULL

);

CREATE TABLE History

(

Id INT IDENTITY PRIMARY KEY,

ProductId INT NOT NULL,

Operation NVARCHAR(200) NOT NULL,

CreateAt DATETIME NOT NULL DEFAULT GETDATE(),

);


USE productsdb
GO
CREATE TRIGGER Products_INSERT
ON Products
AFTER INSERT
AS
INSERT INTO History (ProductId, Operation)
SELECT Id, 'Добавлен товар ' + ProductName + ' фирма ' + Manufacturer
FROM INSERTED
USE productsdb
GO
CREATE TRIGGER Products_DELETE
ON Products
AFTER DELETE
AS
INSERT INTO History (ProductId, Operation)
SELECT Id, 'Удален товар ' + ProductName + ' фирма ' + Manufacturer
FROM DELETED
USE productsdb
GO
CREATE TRIGGER Products_UPDATE
ON Products
AFTER UPDATE
AS
INSERT INTO History (ProductId, Operation)
SELECT Id, 'Обновлен товар ' + ProductName + ' фирма ' + Manufacturer
FROM INSERTED

Достарыңызбен бөлісу:




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет