Announcement

Collapse
No announcement yet.

Code về trigger!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Code về trigger!

    Mình có đoạn code SQL sau:
    Code:
    CREATE TABLE NHANVIEN
    (
    	MaNV	Char(10)not null,
    	HoTenNV	Nvarchar(250),
    	GioiTinh	nvarchar(5),
    	NgaySinh	datetime,
    	DiaChi	Nvarchar(250),
    	MaPhongBan	Char(5) not null,
    	MaChucVu	Char(5),
    	GhiChu	Nvarchar(200)
    ) 
    GO
    CREATE TRIGGER trgnhanvien 
    ON NHANVIEN  
    FOR INSERT, UPDATE 
    AS 
    BEGIN 
        DECLARE @gt nvarchar(1) 
        DECLARE @MaNV char(10) 
        SELECT @gt=GioiTinh, @MaNV= MaNV FROM Inserted 
        IF @gt= '0'  
            UPDATE NHANVIEN SET GioiTinh= N'NAM' WHERE MaNV= @MaNv     
        ELSE 
            IF @gt= '1'  
                UPDATE NHANVIEN SET GioiTinh= N'NỮ' WHERE MaNV= @MaNV     
            ELSE 
            BEGIN 
                PRINT'Nhap 0 hoac 1 cho truong gioi tinh' 
                ROLLBACK TRANSACTION 
            END 
    END
    GO
    CREATE TABLE KHEUOCKHACHHANG_CN
    (
    	MaSoKUCN	Nvarchar(15)NOT NULL,
    	MaKHCN	char(10),
    	MaLoaiVay	Char(5),
    	MaKieuTra	Char(5),
    	MaChuongTrinh	Char(5),
    	NhuCau	Money,
    	NgayDuyet	datetime,
    	MucDuyet	Money,
    	NgayVay	datetime,
    	NgayTra	datetime,
    	MaLaiSuat	Char(5),
    	MaMucDichVay	Char(5),
    	MaHTBaoDam	Char(5),
    	MaThoiHanVay	Char(5),
    	MaNV	Char(10),
    	MaHTVay	Char(5),
    	TraNoGocDinhKy	Int,
    	NgayTinhLai	datetime
    )
    GO
    CREATE TABLE THUNO_CN
    (
    	SoButToanCN	Char(5)NOT NULL,
    	NgayTN	datetime,
    	MaSoKUCN	Nvarchar(15),
    	SoTienThu	Money,
    	SoTienGoc	Money,
    	SoTienConLai	Money,
    	MaLoaiChungTu	Char(5),
    )
    GO
    CREATE TRIGGER trthuno
    ON THUNO_CN  
    FOR INSERT, UPDATE 
    AS 
    BEGIN 
        DECLARE @stg money
    	DECLARE @md money
    	SELECT @stg=SoTienGoc,@md=MucDuyet FROM inserted,KHEUOCKHACHHANG_CN WHERE KHEUOCKHACHHANG_CN.MaSoKUCN=inserted.MaSoKUCN
    	update THUNO_CN set SoTienGoc=@md
    END
    GO
    ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NHANVIEN PRIMARY KEY (MaNV)
    ALTER TABLE KHEUOCKHACHHANG_CN ADD CONSTRAINT PK1_KHEUOCKHACHHANG_CN PRIMARY KEY (MaSoKUCN)
    ALTER TABLE THUNO_CN ADD CONSTRAINT PK_THUNO_CN PRIMARY KEY (SoButToanCN)
    ALTER TABLE KHEUOCKHACHHANG_CN ADD CONSTRAINT FK10_KHEUOCKHACHHANG_CN FOREIGN KEY (MaNV) REFERENCES NHANVIEN(MaNV)
    ALTER TABLE THUNO_CN ADD CONSTRAINT FK1_THUNO_CN FOREIGN KEY (MaSoKUCN) REFERENCES KHEUOCKHACHHANG_CN(MaSoKUCN)
    GO
    set dateformat dmy
    INSERT INTO NHANVIEN VALUES('NV006',N'Huỳnh Yến Phượng','1','04/08/1992',N'Quận 7, Hồ Chí Minh','PB003','CV006',N'Nhân Viên');
    INSERT INTO NHANVIEN VALUES('NV007',N'Nguyễn Minh Nhật','0','02/08/1994',N'Quận 9, Hồ Chí Minh','PB003','CV006',N'Nhân Viên');
    INSERT INTO KHEUOCKHACHHANG_CN VALUES('KU001','CN001','LV02','KT001','CT006',20000000,'3/5/2013',50000000,'24/05/2014','24/05/2013','LS009','MD003','HT003','THV02','NV006','HTV02','1','31/05/2013');
    INSERT INTO KHEUOCKHACHHANG_CN VALUES('KU002','CN002','LV01','KT002','CT007',60000000,'1/5/2013',40000000,'01/05/2014','01/09/2014','LS005','MD004','HT005','THV01','NV007','HTV05','1','09/05/2013');
    INSERT INTO THUNO_CN VALUES ('BT001','15/06/2014','KU001',10000000,null,null,'CT001');
    INSERT INTO THUNO_CN VALUES ('BT002','07/09/2014','KU002',50000000,null,null,'CT001');
    Nhưng khi mình debug xong ra cái số liệu như vậy là tại sao vậy ?
    Ví dụ: KU001-MucDuyet là 50000000 sao đến khi nó lưu vào bảng ThuNO_CN thì lại là 40000000 của KU002 vậy @@ Code trigger của mình có chỗ nào ko ổn ak?

    Untitled3.png

  • #2
    Bạn xem lại câu lệnh update trong phần thân của trigger trthuno nhé!
    Nó sẽ update số tiền gốc ở tất cả các dòng đấy.

    Comment


    • #3
      Originally posted by 10520270 View Post
      Bạn xem lại câu lệnh update trong phần thân của trigger trthuno nhé!
      Nó sẽ update số tiền gốc ở tất cả các dòng đấy.
      Vậy sửa lại như thế nào vậy ạ?

      Comment


      • #4
        Originally posted by 12520884 View Post
        Vậy sửa lại như thế nào vậy ạ?
        Em cần thêm điều kiện (WHERE) tương tự như Trigger trgnhanvien vì bản thân câu " update THUNO_CN set SoTienGoc=@md" thì nó update hết tất cả cả giá trị của SoTienGoc trong bảng luôn

        Comment


        • #5
          Originally posted by hiepnt View Post
          Em cần thêm điều kiện (WHERE) tương tự như Trigger trgnhanvien vì bản thân câu " update THUNO_CN set SoTienGoc=@md" thì nó update hết tất cả cả giá trị của SoTienGoc trong bảng luôn
          em THÊM dk NHƯ VẬY THÌ không nhan dc giá trị của SoTienGoc @@

          Code:
          CREATE TRIGGER trthuno
          ON THUNO_CN  
          FOR INSERT, UPDATE 
          AS 
          BEGIN 
              DECLARE @stg money
          	DECLARE @md money
          	DECLARE @ms1 nvarchar
          	DECLARE @ms2 nvarchar
          	SELECT @ms1=MaSoKUCN,@md=MucDuyet FROM KHEUOCKHACHHANG_CN
          	SELECT @ms2=MaSoKUCN,@stg=SoTienGoc FROM inserted
          	update THUNO_CN set SoTienGoc=@md WHERE MaSoKUCN=@ms1
          END

          Comment

          LHQC

          Collapse
          Working...
          X