Quay lại

Chuyển đổi PostgreSQL
với BravoGen

Toàn bộ tài liệu kỹ thuật MSSQL PostgreSQL của Bravo PGE được tích hợp sẵn. Hỏi trực tiếp, nhận câu trả lời có dẫn nguồn - không cần đọc hết tài liệu.

3 chương
15 mục nội dung
6 nhóm câu hỏi
PGE Bravo platform
01 Các nhóm câu hỏi điển hình

Các nhóm câu hỏi mà developer hệ thống thường gặp khi chuyển đổi sang PostgreSQL. Dùng trực tiếp hoặc adapt theo case của bạn.

Tra cứu cú pháp & mapping
Trên PostgreSQL, hàm ISNULL(DocDate, '') chuyển sang viết thế nào?
SELECT TOP 10 ... ORDER BY ... viết lại trên psql ra sao?
Custom type dbo.MoneyType ở Bravo MSSQL phải đổi thành kiểu gì trên Bravo PGE?
Hàm CHARINDEX, DATEADD, DATEDIFF trong PG tương đương gì?
Convert Function / Procedure / Trigger
Tôi có 1 SP MSSQL trả về dataset, convert sang pg như thế nào?
Trigger MSSQL FOR INSERT, UPDATE, DELETE convert sang PG ra sao? Cho ví dụ trên bảng B30AccDoc.
Bên trong function PG, làm sao gọi 1 function khác mà bỏ kết quả? SELECT có được không?
SCOPE_IDENTITY() sau INSERT trên psql thay bằng pattern gì?
Dynamic SQL, JSONB, XML
Tôi build dynamic SQL trên psql - khi nào dùng %s, khi nào %L?
Convert đoạn xử lý XML nodes()/value() sang pg như nào?
Làm sao parse JSON array vào temp table để loop xử lý trong pg?
Debug lỗi runtime
Trên psql tôi gặp lỗi column reference "id" is ambiguous - nguyên nhân và cách fix?
invalid input syntax for type date: "" - lỗi này do đâu?
query has no destination for result data - fix như nào?
Function pg chạy chậm - làm sao tìm và phân tích nguyên nhân?
Tra cứu schema thật trên DB
Trên Bravo PGE, function ufn_sys_logaction hiện đang định nghĩa thế nào?
Bảng B30AccDoc trên psql có những cột nào, kiểu dữ liệu ra sao?
Tìm tất cả function pg có chứa từ "exchange rate" trong định nghĩa.
Vận hành & deploy
Backup database Bravo10 trên psql, có gì cần lưu ý so với MSSQL?
Backup bằng pgAdmin xong restore mất quyền - cài đặt nào sai?
Checklist deploy database PG mới có những bước nào?
Cách kill 1 session đang block trong psql?
02 Ví dụ tương tác thực tế

Tình huống: Convert đoạn UPDATE có @@ROWCOUNT

Developer

Trên PostgreSQL, convert giúp tôi đoạn này:

UPDATE dbo.B30AccDoc SET DocStatus = 1 WHERE Id = @_Id
IF @@ROWCOUNT = 0
   RAISERROR('Không tìm thấy chứng từ', 16, 1)
BravoGen

3 thay đổi cần áp dụng:

(1) @@ROWCOUNT không tồn tại trên PG - dùng GET DIAGNOSTICS hoặc biến boolean FOUND; (2) RAISERROR đổi thành RAISE EXCEPTION; (3) Biến PG không có prefix @ - dùng p_ (param) hoặc _ (local).

MSSQL (T-SQL)UPDATE dbo.B30AccDoc SET DocStatus = 1 WHERE Id = @_Id IF @@ROWCOUNT = 0 RAISERROR('Không tìm thấy chứng từ', 16, 1)
PostgreSQL (PL/pgSQL)UPDATE dbo.B30AccDoc SET DocStatus = 1 WHERE Id = p_Id; IF NOT FOUND THEN RAISE EXCEPTION 'Không tìm thấy chứng từ'; END IF;
Nguồn: postgresql-guide · Mục 1.2.7 - Biến hệ thống · Mục 2.2 - Function & Procedure · Mục 3.2 - Top 10 lỗi phổ biến
Có thể bạn quan tâm
Khi nào nên dùng GET DIAGNOSTICS _rc := ROW_COUNT thay vì FOUND?
SCOPE_IDENTITY() sau INSERT chuyển sang pattern nào?
Cấu trúc exception handling chuẩn trong function PG ra sao?
03 Tài liệu kỹ thuật postgresql-guide

Tài liệu kỹ thuật nội bộ bao phủ trọn 3 chương - từ nền tảng cú pháp đến vận hành thực chiến.

Chương 1 - Nền tảng & Cú pháp
1.1
Kiến trúc Cluster vs Instance, pgAdmin & DBeaver, extensions cần thiết
1.2
Type mapping, Bravo Custom Types, hàm chuỗi / NULL / ngày tháng
1.3
DML khác biệt - LIMIT, LATERAL, CTE RECURSIVE, FILTER, ILIKE
1.4
Schema dbo + search_path, bảng tạm Tmp_, View & MV
1.5
Quy ước Bravo PGE + Compatibility Functions
Chương 2 - Kỹ thuật chuyển đổi
2.1
Sequence: SERIAL, RETURNING, module seq increment 2
2.2
Function / Procedure - refcursor, PERFORM, JSONB packing, exception
2.3
Trigger - 3 trigger I/U/D, REFERENCING, IS DISTINCT FROM, BusinessTrigger
2.4
XML JSONB, jsonb_set / || / -, Dynamic SQL FORMAT %s/%L + USING
2.5
MERGE PG17 + merge_action, Context Info my./backend.
Chương 3 - Vận hành & Thực chiến
3.1
RBAC, DDL Logging, pg_stat_activity, EXPLAIN ANALYZE, pg_stat_statements
3.2
Top 10 lỗi phổ biến + best practices STRING_AGG / UNNEST
3.3
Backup & Restore - 3 cách + batch script chuẩn
3.4
Deploy checklist 5 bước cho database mới
3.5
Case study - chuyển đổi SP thực tế + checklist 10 bước
Cách BravoGen hoạt động

Khi bạn hỏi, AI tra cứu đúng phần trong tài liệu kỹ thuật, đối chiếu schema thật của Bravo PGE, rồi trả lời có ví dụ code cụ thể và dẫn nguồn chính xác đến mục tương ứng.

Phạm vi hỗ trợ
Cú pháp & mapping hàm T-SQL ↔ PL/pgSQL
Convert SP, Function, Trigger thực tế
Debug lỗi runtime phổ biến
Tra cứu schema Bravo PGE live
Vận hành, backup, deploy checklist
Lưu ý khi sử dụng

BravoGen cung cấp hướng dẫn dựa trên tài liệu nội bộ Bravo PGE. Luôn test code trên môi trường dev trước khi áp dụng production. Với schema thật, AI query trực tiếp PostgreSQL của Bravo PGE.

Mẹo dùng hiệu quả hơn

Paste thẳng đoạn code MSSQL vào chat và yêu cầu convert. Đặt câu hỏi cụ thể - tên bảng, tên function, tên lỗi runtime - để BravoGen tìm được đúng nguồn và trả lời chính xác hơn.