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

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ต.ค. 2024
  • Link khóa học SQL Server: titv.vn/course...
    Link tải code: github.com/len...
    Clip hướng dẫn chuẩn bị CSDL để thực hành: • Khóa Học SQL Server - ...

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

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

    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)

  • @tprunuspersicav8839
    @tprunuspersicav8839 9 หลายเดือนก่อน +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

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

    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

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

    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.

  • @14.trinhongkhanh88
    @14.trinhongkhanh88 11 หลายเดือนก่อน

    Tuyệt vời anh ơi🤣

  • @thanhhuynguyen7551
    @thanhhuynguyen7551 10 หลายเดือนก่อน +1

    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

  • @LinhVũNguyễnDuy
    @LinhVũNguyễnDuy 10 หลายเดือนก่อน

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

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

    cảm ơn a

  • @HoangAnh-es4kn
    @HoangAnh-es4kn 11 หลายเดือนก่อน

    Cảm ơn a❤

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

    em cảm ơn ạ

  • @LinhVũNguyễnDuy
    @LinhVũNguyễnDuy 10 หลายเดือนก่อน

    thêm video về Trigger đi anh

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

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

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

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

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

    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;