Cách tạo các thủ tục lưu trữ trong PostgreSQL

Cach Tao Cac Thu Tuc Luu Tru Trong Postgresql



Với PostgreSQL, có thể tạo các thủ tục lưu sẵn để xác định các quy trình khác nhau sẽ được thực thi khi được gọi. Các quy trình này bao gồm các câu lệnh SQL thực hiện các tác vụ đã xác định trên cơ sở dữ liệu của bạn. Ví dụ: bạn có thể tạo một thủ tục lưu sẵn để cập nhật các giá trị trong bảng khi bạn gọi nó.

Các thủ tục lưu trữ giúp tối ưu hóa cơ sở dữ liệu và tăng cường khả năng sử dụng lại. Thay vì phải thực hiện cùng một truy vấn, bạn có thể tạo tác vụ dưới dạng thủ tục lưu trữ mà bạn sẽ gọi bất cứ khi nào cần. Bạn sẽ tìm hiểu mọi thứ về các thủ tục được lưu trữ ở cuối bài đăng này.

Làm việc với các thủ tục lưu trữ trong PostgreSQL

Là người dùng PostgreSQL, bạn có thể nhận thấy rằng các hàm PostgreSQL không thực hiện các giao dịch. Mặc dù có thể tạo một giao dịch nhưng việc cam kết hoặc đưa nó trở lại trạng thái trước đó là không thể. Tuy nhiên, những hạn chế này được bỏ qua bằng cách sử dụng các thủ tục được lưu trữ.







Đây là cú pháp cơ bản để tạo một thủ tục lưu sẵn trong PostgreSQL:



TẠO HOẶC THAY THẾ THỦ TỤC

[các] tham số data_type

)

NGÔN NGỮ plpsql;

NHƯ $$

TUYÊN BỐ

biến_if_bất kỳ kiểu dữ liệu nào

BẮT ĐẦU

Hợp lý

KẾT THÚC;

$$

Những điều quan trọng cần lưu ý từ cú pháp đã cho là “procedure_name”, là tên mà bạn sẽ sử dụng cho thủ tục được lưu trữ, các tham số mà bạn muốn đưa vào và kiểu dữ liệu của chúng cũng như logic chủ yếu là các câu lệnh SQL.



Hãy đưa ra ba ví dụ để giúp bạn hiểu cách tạo các thủ tục lưu trữ trong PostgreSQL.





Ví dụ 1: Thủ tục lưu trữ để tính bình phương của một số

Trong ví dụ đầu tiên, chúng tôi tạo một thủ tục lưu trữ sử dụng câu lệnh “RAISE NOTICE” làm cách in kết quả đầu ra tới thiết bị đầu cuối. Thủ tục lưu trữ lấy giá trị số nguyên mà bạn cung cấp cho nó khi gọi nó và tính bình phương của nó.

Đây là cách chúng tôi tạo thủ tục lưu sẵn:



Chúng tôi đặt tên cho tham số của mình là “num1” và đó là một số nguyên. Đối với phần logic, chúng tôi xác định cách lấy bình phương của “num1” và lưu nó dưới dạng biến bình phương. Khi chúng tôi thực thi lệnh, chúng tôi nhận được đầu ra “TẠO THỦ TỤC” xác nhận rằng chúng tôi đã quản lý để tạo thành công thủ tục được lưu trữ.

Nhiệm vụ tiếp theo là gọi thủ tục và đưa ra đối số mong đợi.

GỌI thủ tục_name(đối số);

Bạn sẽ nhận được kết quả CALL cho biết thủ tục lưu trữ đã được thực thi và chúng ta đang nhận được kết quả mong đợi, trong trường hợp này là bình phương của đối số mà chúng ta đã thêm vào.

Ví dụ 2: Quy trình lưu trữ để chèn các giá trị vào một mục trong bảng

Hai ví dụ sau đây cho thấy cách tạo một thủ tục lưu trữ hoạt động với bảng cơ sở dữ liệu. Hãy nhanh chóng tạo bảng “students” mà chúng ta sẽ làm việc cùng.

Trong ví dụ này, chúng tôi tạo một thủ tục lưu trữ cho phép người dùng chèn các giá trị vào bảng mới tạo. Lưu ý cách chúng tôi chỉ định các tham số mà chúng tôi mong muốn được thêm làm đối số khi chúng tôi gọi thủ tục được lưu trữ. Hơn nữa, chúng tôi xác định logic lấy các đối số được thêm vào và thực thi câu lệnh INSERT SQL vào bảng “students”.

Chúng ta có thể kiểm tra các thủ tục lưu trữ có sẵn bằng cách chạy lệnh sau:

\df

Thủ tục được lưu trữ đầu tiên mà chúng ta có thể thấy từ kết quả đầu ra sau đây là “add_student” mà chúng ta đã tạo trước đó.

Bây giờ, hãy gọi thủ tục lưu sẵn để thực thi nó. Hình ảnh sau đây cho thấy chúng ta có một bảng trống như thế nào, nhưng chúng ta đã gọi thủ tục lưu sẵn để thêm học sinh đầu tiên:

Nếu chúng ta liệt kê các giá trị trong bảng, hãy chú ý xem các đối số mà chúng ta đã thêm bằng lệnh gọi thủ tục là giá trị cho học sinh đầu tiên trong bảng như thế nào. Đó là cách bạn tạo một thủ tục lưu trữ để chèn các giá trị vào bảng.

Lưu ý rằng khi tạo thủ tục lưu sẵn, các tham số bạn chỉ định phải khớp với những gì được mong đợi trong bảng của bạn để tránh lỗi. Hơn nữa, kiểu dữ liệu phải trùng khớp.

Ví dụ 3: Thủ tục lưu trữ để cập nhật mục trong bảng

Tiếp tục, hãy tạo một thủ tục lưu sẵn khác để cập nhật một mục trong bảng. Nếu bạn muốn có một cách cập nhật nhanh chóng các giá trị trong bảng của chúng tôi, bạn có thể tạo một thủ tục lưu trữ cập nhật như sau:

Chỉ định cột nào bạn muốn cập nhật bằng từ khóa WHERE và giá trị mới bằng từ khóa SET. Sau đó, bạn phải thêm từ khóa COMMIT để duy trì các thay đổi.

Hãy gọi thủ tục lưu trữ cập nhật và thêm các đối số dự kiến: “student_id” và khóa học mới.

Nếu chúng tôi liệt kê các mục trong bảng của mình, chúng tôi có thể xác minh rằng chúng tôi có khóa học cập nhật cho học viên cụ thể mà chúng tôi nhắm mục tiêu. Đó là cách hoạt động của một thủ tục lưu trữ cập nhật.

Phần kết luận

Bạn có thể tạo bất kỳ thủ tục lưu sẵn nào trong PostgreSQL. Bạn chỉ cần hiểu cú pháp để làm theo và sau đó xác định logic của mình cho thủ tục được lưu trữ. Từ đó, gọi thủ tục được lưu trữ và xác minh rằng nó đã thực thi như mong đợi. Bài đăng này giải thích về các thủ tục được lưu trữ trong PostgreSQL và cung cấp các ví dụ về cách tạo chúng.