Học SQL Server - Bài 46. Triggers trong SQL Server

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 ธ.ค. 2024

ความคิดเห็น • 30

  • @2002_ltt
    @2002_ltt 11 หลายเดือนก่อน +5

    Em chào thầy ạ, em có làm phần ví dụ cuối của thầy theo cách này và có tác dụng và khá dễ hiểu ạ
    -- Viet trigger moi khi co mot chi tiet don hang duoc them vao, so luong ton kho phai giam di
    create trigger UpdateProductInventory
    on [dbo].[Order Details]
    after insert
    as
    begin
    update Products
    set UnitsInStock = UnitsInStock - i.Quantity
    from inserted i
    where Products.ProductID = i.ProductID
    end
    insert into [dbo].[Order Details](OrderID, ProductID, UnitPrice, Quantity)
    values(10248, 77, 13.00, 10)

  • @_oangNhatTan
    @_oangNhatTan 4 วันที่ผ่านมา

    Cảm ơn a đã chia sẻ kiến thức cực kỳ tâm huyết! Nhờ những vid cụa a, e đã đạt đc giải khuyến khích của bộ môn này trong trg ạ ♥️🔥

  • @lejuan9002
    @lejuan9002 หลายเดือนก่อน

    Thật sự là cảm ơn kênh của anh rất nhiều. Chỉ cần xem vid của anh rồi làm thêm bài tập trên lớp là em đi thi SQL như ăn bánh luôn. Quá chất lượng

  • @thanhhuynguyen7551
    @thanhhuynguyen7551 ปีที่แล้ว +1

    Em cảm ơn thầy về bài giảng!
    Em gửi BT1 ạ!
    --BT1: viết Trigger khi insert hay Update tự cập nhật ngày giờ thay đổi
    ALTER TABLE dbo.Products
    ADD LastModified DateTime
    --Viết Trigger
    CREATE TRIGGER tg_UpdateLastModifiedWhenChangeProduct
    ON dbo.Products
    AFTER INSERT, UPDATE
    AS
    BEGIN
    UPDATE dbo.Products SET LastModified = GETDATE()
    FROM dbo.Products p
    INNER JOIN Inserted i
    ON i.ProductID = p.ProductID
    END

  • @tprunuspersicav8839
    @tprunuspersicav8839 11 หลายเดือนก่อน +2

    bài cập nhật số lượng tồn kho em có cách dễ hiểu hơn ạ .
    create trigger tudongcapnhatsoluongtonkhohanghoa
    on [dbo].[Order Details]
    after insert
    as
    begin
    update [Products]
    set [Products].[UnitsInStock] = [Products].[UnitsInStock] - i.Quantity
    from inserted i ,[Order Details] od
    where i.ProductID = [Products].ProductID and [Products].[UnitsInStock] >= i.Quantity

    end
    insert into [dbo].[Order Details]
    values (10248,4, 700,999,0)
    select * from Products

  • @14.trinhongkhanh88
    @14.trinhongkhanh88 ปีที่แล้ว

    Tuyệt vời anh ơi🤣

  • @HuyHoang-kz2lu
    @HuyHoang-kz2lu 6 หลายเดือนก่อน

    Phút 26:37 e nghĩ cái chỗ IF EXIST ... WHERE phải là i.Discontinued < 0 vì mình đang check với cái hàng update.

  • @HoangAnh-es4kn
    @HoangAnh-es4kn ปีที่แล้ว

    Cảm ơn a❤

  • @thanhhuynguyen7551
    @thanhhuynguyen7551 ปีที่แล้ว +2

    Em cảm ơn thầy về bài giảng!
    Em gửi BT2 ạ!
    --BT2
    CREATE TRIGGER InteadOfDeleteCustomer
    ON dbo.Customers
    INSTEAD OF DELETE
    AS
    BEGIN
    SET NOCOUNT ON
    IF EXISTS (SELECT 1 FROM Deleted d INNER JOIN dbo.Orders o ON o.CustomerID = d.CustomerID)
    BEGIN
    RAISERROR(N'Không thể xóa khách hàng có đơn hàng liên quan.',16, 1)
    END
    ELSE
    BEGIN
    --Nếu k có đơn hàng liên quan thì thực hiện xóa khách hàng
    DELETE FROM dbo.Customers WHERE CustomerID IN(SELECT CustomerID FROM Deleted)
    END
    END

  • @LeNguyenGiaHung
    @LeNguyenGiaHung 17 วันที่ผ่านมา

    Thầy nói về sự khác nhau giữa stored procedure và function được hong ạ?
    Em cảm ơn thầy nhiều ạa

  • @huyentran-gk5qr
    @huyentran-gk5qr หลายเดือนก่อน

    thầy ơi, em search thì thấy FOR và AFTER đều là trigger đc kích hoạt SAU 1 sự kiện ấy thầy? em nghĩ đó là lý do tại sao bài discount khi thầy update discount=5 thì nó vẫn 1 row affected ấy thầy. còn BEFORE mới là trigger ktra trước khi 1 hành động xảy ra.
    ko biết theo em tìm hiểu đc như vậy có đúng ko thầy ?

  • @atphan1824
    @atphan1824 7 หลายเดือนก่อน

    cảm ơn a

  • @inhtruongvu7618
    @inhtruongvu7618 ปีที่แล้ว

    em cảm ơn ạ

  • @LinhVũNguyễnDuy
    @LinhVũNguyễnDuy ปีที่แล้ว

    mình có cần lập bảng tầm ảnh hưởng trước khi tạo trigger không ạ

  • @LinhVũNguyễnDuy
    @LinhVũNguyễnDuy ปีที่แล้ว

    thêm video về Trigger đi anh

  • @manhhoa3711
    @manhhoa3711 10 หลายเดือนก่อน

    Thầy ơi, e có lên github nhưng mà không có đáp án của 3 bài BTVN ạ

    • @tuongpham986
      @tuongpham986 7 หลายเดือนก่อน

      bài tập về nhà là tự giải á bạn. thầy chỉ up bài giảng thui

  • @thanhhuynguyen7551
    @thanhhuynguyen7551 ปีที่แล้ว +2

    Em cảm ơn thầy về bài giảng!
    Em gửi BT3 ạ!
    CREATE TRIGGER BanInsertOrderThanInStock
    ON dbo.[Order Details]
    FOR INSERT
    AS
    BEGIN
    SET NOCOUNT ON;
    IF EXISTS (
    SELECT 1
    FROM Inserted i
    INNER JOIN dbo.[Order Details] od ON od.OrderID = i.OrderID
    INNER JOIN dbo.Products p ON p.ProductID = od.ProductID
    WHERE p.UnitsInStock < od.Quantity
    )
    BEGIN
    ROLLBACK;
    RAISERROR(N'Số lượng đặt hàng lớn hơn số lượng trong kho.', 16, 1);
    END
    END;