Chào mừng đến với BIS Đăng nhập | Đăng ký | Trợ giúp
trong Tìm kiếm

[Help] Bị lỗi trigger !

Bài cuối 05-10-2014 02:31 PM của nhatlongvu. 1 trả lời.
Trang 1 trong số 1 (2 nội dung)
Sắp xếp bài viết: Trước Tiếp theo
  • 05-04-2014 06:46 PM

    • chicong
    • Không xếp hạng
    • Tham gia 05-04-2014
    • Điểm 35

    [Help] Bị lỗi trigger !

     
    Em có csdl như hình. Anh chị xem giúp em trigger . Nó bị lỗi ở câu lệnh IF cuối cùng.
    _ Nếu em để câu lệnh IF đó thì nó chỉ insert được 1 bản ghi vào bảng tbl_ChiTietKho, các bản ghi tiếp theo nó ko insert đc. Trong khi nếu update thì nó vẫn update được hết các bản ghi.
    _ Nếu em xóa câu lệnh IF đó và phần Update phía trên thì nó thực hiện insert đc hết các bản ghi, nhưng mà bỏ đi thì ko phân biệt đc khóa đó đã tồn tại hay chưa để update hoặc insert.
    Mong mọi người giúp em sửa lỗi này. Em cảm ơn !
     
    CREATE TRIGGER [dbo].[trg_SoLuongTonKho]
       ON  [dbo].[tbl_ChiTietNhapKho]
       FOR INSERT
    AS

        BEGIN
            declare @MaKho int
                Select top 1 @MaKho=MaKho from tbl_NhapKho ORDER BY MaPhieuNhap desc; -- lay' ma kho cuoi' cung` vua` dc them vao` bang tbl_NhapKho
            declare @MaSanPham varchar(20)
            declare @SoLuongNhap int
            SET NOCOUNT ON;
            Declare MyCursor CURSOR FOR
            Select MaSanPham, SoLuongNhap from inserted;
            OPEN MyCursor;
            FETCH NEXT FROM MyCursor
            INTO @MaSanPham, @SoLuongNhap;
            WHILE @@FETCH_STATUS = 0
            Begin
                -- neu' ton tai khoa' thi thuc hien update SoLuongTon:
                IF exists (select MaKho, MaSanPham from tbl_ChiTietKho)
                    Begin
                        Update tbl_ChiTietKho Set SoLuongTon = SoLuongTon + @SoLuongNhap
                        Where MaKho = @MaKho and MaSanPham = @MaSanPham
                    End
                -- neu' ko ton tai khoa' thi thuc hien insert:
                IF not exists (select MaKho, MaSanPham from tbl_ChiTietKho)    -- bi sai o cau lenh IF nay`, no' chi insert dc 1 ban ghi, cac' ban ghi tiep' theo ko insert dc
                -- bo? cau lenh IF nay` di va` phan` update ben^ tren^ thi no' chay dc insert, nhung bo? di thi ko phan biet dc khoa' da ton tai hay chua
                -- thay IF nay` bang` ELSE no' cung ko insert het' cac' ban ghi dc
                    Begin
                        Insert into tbl_ChiTietKho (MaKho, MaSanPham, SoLuongTon) values (@MaKho, @MaSanPham, @SoLuongNhap)
                    End
                FETCH NEXT FROM MyCursor
                INTO @MaSanPham, @SoLuongNhap;
            End
            CLOSE MyCursor;
            DEALLOCATE MyCursor;
        END
    Từ khóa đại diện:
    • Điểm chủ đề: 35
  • 05-10-2014 02:31 PM trả lời

    Re: [Help] Bị lỗi trigger !

    Làm trigger kết hợp 3 bảng thì nên chăng ?

    • Điểm chủ đề: 20
Trang 1 trong số 1 (2 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems