Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution

    Đề bài: [SQL Server] Trigger ghi lại giá cũ và giá mới

    Hai bảng sanpham(id, ten, gia) và lichsu_gia(id_sp, gia_cu, gia_moi).

    Hãy tạo trigger trg_doi_gia kiểu AFTER UPDATE trên sanpham: mỗi khi giá bị thay đổi, ghi vào lichsu_gia một dòng gồm id sản phẩm, giá cũ (lấy từ bảng ảo deleted) và giá mới (lấy từ inserted).

    Sau đó tăng giá tất cả sản phẩm thêm 10%% (gia = gia * 11 / 10), rồi in id_sp, gia_cu, gia_moi sắp xếp theo id_sp tăng dần.

    • Định dạng đầu vào:

      Hai bảng đã được tạo sẵn. sanpham: id INT, ten NVARCHAR(50), gia INT. lichsu_gia: id_sp INT, gia_cu INT, gia_moi INT.

    • Ràng buộc đầu vào:

      Số sản phẩm ≤1000\le 1000≤1000. Phép chia là chia nguyên.

    • Định dạng đầu ra:

      Mỗi dòng gồm id_sp, gia_cu, gia_moi, cách nhau bởi TAB.

    Ghi chú:

    Bài làm phải bắt đầu bằng một dòng GO — SQL Server yêu cầu CREATE TRIGGER là lệnh đầu tiên của một batch. Gợi ý: JOIN hai bảng ảo inserted và deleted theo id.

    Ví dụ:

    Đầu vào:

    CREATE TABLE sanpham(id INT, ten NVARCHAR(50), gia INT);
    CREATE TABLE lichsu_gia(id_sp INT, gia_cu INT, gia_moi INT);
    INSERT INTO sanpham(id,ten,gia) VALUES (1,N'A',100),(2,N'B',200);

    Đầu ra:

    1	100	110
    2	200	220

    Chủ đề

    🗄️ Cơ sở dữ liệuSQL ServerSQL Server: TriggerTất cả môn học

    Đang tải editor...