Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Tạo trigger ngăn cấm sự kiện xảy ra với hệ quản trị Oracle?

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    2

    Mặc định Tạo trigger ngăn cấm sự kiện xảy ra với hệ quản trị Oracle?

    Mình có hai table , hệ quản trị Oracle

    Table Taikhoan(matk,sodutk)
    Table Nap_rut_tien_tk(matk,ngay,sotien,loaigiaodich)

    mình muốn ngăn chặn việc insert vào bảng Nap_rut_tien_tk khi mà sotien>=sodutk ứng với matk và loaigiaodich la R (co nghia loai giao dich rut tien)
    (để tránh tình trạng rút tiền quá lố so với số dư tài khoản hiên có)

    Trigger của mình là

    Code:
    create or replace trigger  rut_tien
    before insert on Nap_rut_tien_tk
    for each row
    declare
    sodu number(15,2);
    begin                                         
    select Taikhoan.sodutk into :sodu            //cái này là để lấy ra sodutk của taikhoan bị rut tiền chép vào biến :sodu
    from Taikhoan ,:new  
    where Taikhoan.matk=b.matk and :new.loaigiaodich="R";
    
    if (:new.sotien>=:sodu) 
    then
    raise_application_error (-6096, 'You can not insert record');
    end if; 
    end;
    Bị báo lỗi là
    ERROR at line 5: PLS-00049: bad bind variable 'SODU'

    Các bạn chỉ giùm với ,cám ơn
    Đã được chỉnh sửa lần cuối bởi khanhkhoa : 07-05-2009 lúc 04:40 PM.

  2. #2
    Ngày gia nhập
    03 2010
    Nơi ở
    tphcm
    Bài viết
    226

    Trích dẫn Nguyên bản được gửi bởi khanhkhoa Xem bài viết
    Mình có hai table , hệ quản trị Oracle

    Table Taikhoan(matk,sodutk)
    Table Nap_rut_tien_tk(matk,ngay,sotien,loaigiaodich)

    mình muốn ngăn chặn việc insert vào bảng Nap_rut_tien_tk khi mà sotien>=sodutk ứng với matk và loaigiaodich la R (co nghia loai giao dich rut tien)
    (để tránh tình trạng rút tiền quá lố so với số dư tài khoản hiên có)

    Trigger của mình là

    Code:
    create or replace trigger  rut_tien
    before insert on Nap_rut_tien_tk
    for each row
    declare
    sodu number(15,2);
    begin                                         
    select Taikhoan.sodutk into :sodu            //cái này là để lấy ra sodutk của taikhoan bị rut tiền chép vào biến :sodu
    from Taikhoan ,:new  
    where Taikhoan.matk=b.matk and :new.loaigiaodich="R";
    
    if (:new.sotien>=:sodu) 
    then
    raise_application_error (-6096, 'You can not insert record');
    end if; 
    end;
    Bị báo lỗi là
    ERROR at line 5: PLS-00049: bad bind variable 'SODU'

    Các bạn chỉ giùm với ,cám ơn
    nếu bạn viết trigger thì không thể viết :sokieu này được.nếu sodu này có trong csdl thì bạn phải viết :new.sodu hoặc :old.sodu
    còn nếu bạn muốn gọi số dư là 1 cái biến thì bạn phải khai báo trước ở bên trên.

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    1

    Bạn sửa lại như thế này xem sao
    Code:
    CREATE OR REPLACE TRIGGER RUT_TIEN BEFORE INSERT ON NAP_RUT_TIEN_TK
    FOR EACH ROW
    DECLARE
      SODU NUMBER(15,2);
    BEGIN
      IF(:NEW.LOAIGIAODICH='R') THEN
        SELECT SODUTK INTO SODU
        FROM TAIKHOAN
        WHERE :NEW.MATK=MATK;
        IF(SODU< :NEW.SOTIEN) THEN
           RAISE_APPLICATION_ERROR(-20002,'You can not insert record');
        END IF;
      END IF;
    END;

Các đề tài tương tự

  1. Kết nối DB Oracle Server không cần cài Oracle Client
    Gửi bởi ducvu153 trong diễn đàn Thắc mắc Oracle
    Trả lời: 3
    Bài viết cuối: 04-02-2015, 09:15 AM
  2. bán tấm compact và thi công vách ngăn vệ sinh, vách ngăn văn phòng, vách ngăn di động, sàn nâng kỹ thuật
    Gửi bởi marketeronline trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 24-09-2013, 01:14 AM
  3. FOR trigger khác AFTER trigger như thế nào?
    Gửi bởi vuongcongdat trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 0
    Bài viết cuối: 20-02-2013, 11:19 PM
  4. muốn học hệ quản trị oracle cần những gì
    Gửi bởi grok trong diễn đàn Thắc mắc Oracle
    Trả lời: 1
    Bài viết cuối: 20-12-2012, 12:06 PM
  5. Các loại rau quả ngăn ngừa ung thư
    Gửi bởi quynhcute trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-09-2012, 03:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn