Hiển thị kết quả từ 1 đến 4 / 4
  1. #1
    Tham gia
    22-12-2009
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts

    Ý tưởng mới ! Không cho Xóa dữ liệu từ 2 bảng Ràng buộc. Help me

    Xin chào các bạn trong 4rum, những người học it. Tối hôm nay, tôi có 1 vấn đề chưa tìm được đáp án mong anh em biết rồi giúp với.
    Chả là thế này: tôi làm soft quản lý nho nhỏ, SQL server 2k5 + VS 2k5, tôi 1 table Class, 1 table Student.
    Class(MaClass,TenClass,GhiChu)
    Student(MaStu,TenStu,MaClass,NgaySinh,Que,CMT,GhiC hu)

    MaClass là Foreign key trong bảng Student.

    Xóa dữ liệu từ bảng Class(bảng Cha)
    If Nếu MaClass không xuất hiện bảng Student then
    Chỉ xóa bảng Class
    Elseif(Nếu MaClass có ở bảng Student)
    Thông báo "Dữ liệu được sử dụng bảng Student(bảng Con), ko thể xóa được".

    Thực hiện trên Form VS 2k5. Ai biết bảo tôi với.
    Quote Quote

  2. #2
    Tham gia
    07-09-2007
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    Thì bạn cứ xóa bảng Cha đi.
    Nếu xóa không được thì nó sẽ báo lỗi. Xóa được thì ok.hehe. Chỉ cần thiết kế cơ sở dữ liệu đúng như bạn nói là được.

  3. #3
    Tham gia
    23-07-2006
    Bài viết
    3,215
    Like
    15
    Thanked 373 Times in 178 Posts
    Quote Được gửi bởi kinhdangmanh View Post
    Xin chào các bạn trong 4rum, những người học it. Tối hôm nay, tôi có 1 vấn đề chưa tìm được đáp án mong anh em biết rồi giúp với.
    Chả là thế này: tôi làm soft quản lý nho nhỏ, SQL server 2k5 + VS 2k5, tôi 1 table Class, 1 table Student.
    Class(MaClass,TenClass,GhiChu)
    Student(MaStu,TenStu,MaClass,NgaySinh,Que,CMT,GhiC hu)

    MaClass là Foreign key trong bảng Student.

    Xóa dữ liệu từ bảng Class(bảng Cha)
    If Nếu MaClass không xuất hiện bảng Student then
    Chỉ xóa bảng Class
    Elseif(Nếu MaClass có ở bảng Student)
    Thông báo "Dữ liệu được sử dụng bảng Student(bảng Con), ko thể xóa được".

    Thực hiện trên Form VS 2k5. Ai biết bảo tôi với.
    If Nếu MaClass không xuất hiện bảng Student then
    => Đơn giản là trước khi xóa, bác làm 1 câu select (Count) cái khóa đó (MaClass) ở bảng con, nếu trả ra kết quả bằng 0 => cho xóa, ngược lại => không cho xóa

    Ví dụ câu SQL khi MaClass=1:

    Code:
    Select Count (MaClass) As [Count] From Student Where MaClass=1

  4. #4
    Tham gia
    22-12-2009
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi BoTayConGaQuay View Post
    If Nếu MaClass không xuất hiện bảng Student then
    => Đơn giản là trước khi xóa, bác làm 1 câu select (Count) cái khóa đó (MaClass) ở bảng con, nếu trả ra kết quả bằng 0 => cho xóa, ngược lại => không cho xóa

    Ví dụ câu SQL khi MaClass=1:

    Code:
    Select Count (MaClass) As [Count] From Student Where MaClass=1
    cách của bác chạy ok rồi. Nhưng chắc không tối ưu lắm khi có 1 triệu bản ghi, với khóa ngoại ở nhiều table thì cách này run sẽ rất lâu. Tốn bộ nhớ.
    Dù sao cám ơn bác.

Bookmarks

Quy định

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