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

Đề tài: Xóa bản ghi ở bảng cha đồng thời thay đổi nội dung khóa ngoại bảng con về rỗng

  1. #1
    Ngày gia nhập
    04 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    57

    Mặc định Xóa bản ghi ở bảng cha đồng thời thay đổi nội dung khóa ngoại bảng con về rỗng

    Chào mọi người!
    Mình có vấn đề mong mọi người giúp:
    Có 2 table tblKhachhang(makh,...,thanhpho); tblThanhpho(thanhpho,tenthanhpho). Làm sao để khi xóa 1 bản ghi ở table tblThanhpho thì thanhpho ở table tblKhachhang chuyển thành xâu '' < rỗng>. Mình đã làm như sau nhưng không khi xóa thì Sql server manager studio bị đơ 1 lúc và k xóa đc được:
    Code:
    ALTER TRIGGER [dbo].[trg_delthanhpho] ON [dbo].[tblThanhpho]
    FOR DELETE
    AS
    BEGIN
           DECLARE cur_id CURSOR for (SELECT thanhpho FROM deleted)
           DECLARE @id nchar(10)
           OPEN cur_id
           FETCH NEXT FROM cur_id INTO @id
           WHILE(@@fetch_status = 0)
           BEGIN
                  UPDATE tblKhachhang set thanhpho='' WHERE thanhpho = @id
           END
    END
    Mong mọi người giúp. Thanks and best regards!

  2. #2
    Ngày gia nhập
    06 2011
    Bài viết
    93

    Trong while loop bạn phải fetch nữa mới được

    SQL Code:
    1. ALTER TRIGGER [dbo].[trg_delthanhpho] ON [dbo].[tblThanhpho]
    2. FOR DELETE
    3. AS
    4. BEGIN
    5.        DECLARE cur_id CURSOR FOR (SELECT thanhpho FROM deleted)
    6.        DECLARE @id NCHAR(10)
    7.        OPEN cur_id
    8.        FETCH NEXT FROM cur_id INTO @id
    9.        WHILE(@@fetch_status = 0)
    10.        BEGIN
    11.               UPDATE tblKhachhang SET thanhpho='' WHERE thanhpho = @id
    12.               FETCH NEXT FROM cur_id INTO @id
    13.        END
    14. END

    Còn không thì viểt như sau không cần cursor
    SQL Code:
    1. ALTER TRIGGER [dbo].[trg_delthanhpho] ON [dbo].[tblThanhpho]
    2. FOR DELETE
    3. AS
    4. BEGIN
    5.        UPDATE tblKhachhang SET thanhpho='' WHERE thanhpho IN (SELECT thanhpho FROM deleted)
    6. END

  3. #3
    Ngày gia nhập
    08 2009
    Nơi ở
    C:\Documents and Settings\ME\My Documents\Visual Studio 2010
    Bài viết
    516

    Cách khác:
    . Set default value cho thanhpho ở bảng tblKhachhang là "" (trong Sql là '')
    . Tạo khóa ngoại cho thanhpho trong bảng tblThanhpho
    . Trong properties của khóa ngoại chọn Delete Rule là Set Default.

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

  1. Không xóa sửa trong linq dc, CSDL có 2 khóa chính Combo vs dattimepicker, 1 combo khóa ngoại
    Gửi bởi kenlove798 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 13-07-2014, 08:09 AM
  2. MS SQL với C# xóa dữ liệu khi bị ràng buộc khóa ngoại ?
    Gửi bởi codepro747 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 0
    Bài viết cuối: 22-09-2013, 01:45 PM
  3. Lập trình C xóa, thay đổi nội dung của tập tin nhị phân trong C?
    Gửi bởi binh_bkap_2011 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 04-11-2011, 06:30 AM
  4. Xử lý nút Xóa trong phần mềm quản lí Xe Khách với dữ liệu có khóa ngoại?
    Gửi bởi thanh_cute trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 03-09-2011, 09:30 AM
  5. Database xóa khóa chính không cần xác định khóa ngoại!
    Gửi bởi hoanghuynh2409 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-03-2011, 08:31 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