btvn.vn
Tìm kiếm Đăng nhập

Sửa và xóa dữ liệu có tham chiếu

Lưu trên thiết bị này
Thực hành tạo và khai thác cơ sở dữ liệu — ICT · Chọn bài khác

Sửa đúng ô, rồi đọc lại

Trong `bannhac`, nếu một bài thử đang gắn nhầm với Mai An nhưng đúng là của **nhạc sĩ hư cấu Hà Vy**, tìm đúng hàng theo `idBannhac`. Với HeidiSQL 12.21.1.1 bản GTK2, tiếng Anh trên Linux, nháy đúp ô `idNhacsi`. Nếu mới hiện ô mã, bấm mũi tên để mở danh sách; chọn **Hà Vy (2)** bằng chuột. Nhấn Tab để chốt ô, rồi Post; dùng F5 đọc lại dữ liệu. Trên bản sao thử, hàng bài mã 6 đổi mã nhạc sĩ từ 1 sang 2, tên bài và mã bài giữ nguyên. Chỉ thực hành thay đổi trên dữ liệu thử được phép sửa. Đọc lại cả `tenBannhac` và `idNhacsi` theo mã bài; không chọn hàng chỉ vì đang nằm ở dòng thứ hai hay thứ ba. “Ngày nắng” gắn với Mai An hay Hà Vy trong tình huống này là giả định để luyện sửa dữ liệu, không phải sự thật bên ngoài. Nếu ứng dụng báo lỗi, dừng lần sửa và kiểm dữ liệu đã lưu trước khi tiếp tục. Mã thay thế phải tồn tại ở `nhacsi`; nếu gõ mã 99 chưa có, MySQL từ chối. Khóa ngoại kiểm **mã có tồn tại**, không biết người được chọn có thật sự sáng tác bài ngoài đời hay không. Vì vậy, kiểm nội dung nhập vẫn là trách nhiệm của người quản lí dữ liệu.

Đi theo đường tham chiếu trước khi xóa

Bảng `bannhac` chứa bài của nhạc sĩ, nên khi bài còn dùng `idNhacsi = 1`, xóa hàng Mai An mã 1 trong `nhacsi` bị MySQL chặn theo ràng buộc đang dùng. Tương tự, khi `banthuam` đang trỏ tới bản nhạc mã 1, xóa **bản nhạc mã 1** cũng bị chặn. Trong CSDL thử riêng, mở Data của bảng cha, đọc mã rồi chọn **đầu hàng**, nhấn Ctrl+Delete. Hộp xác nhận phải ghi đúng số hàng cần xử lí; nhấn OK trên dữ liệu thử đã được phép xóa. Với hai hàng cha còn được tham chiếu trên, HeidiSQL hiện **SQL Error (1451)**; đóng thông báo và F5 kiểm các hàng vẫn còn. Nếu con trỏ đang sửa trong một ô, nhấn Escape để ra khỏi chế độ nhập trước khi chọn hàng; xóa nội dung ô khác với xóa cả hàng. Đó không có nghĩa mọi hàng ở bảng cha đều không xóa được: hàng **chưa có bản ghi con tham chiếu** có thể xóa nếu đúng quyền và mục đích. Trước khi xóa, đọc mã hàng, các bảng đang tham chiếu và số hàng trong hộp xác nhận. Khi cần bỏ một bản ghi có liên quan, phải xem xét nghiệp vụ và xử lí các bản ghi phụ thuộc theo quy trình được phép; không tắt khóa ngoại hay chọn xóa dây chuyền chỉ để hết thông báo lỗi. Trong CSDL bài tập này, hành động mặc định là chặn xóa hàng cha đang được tham chiếu.

Bài luyện

Bản nhạc đang lưu idNhacsi = 1. Muốn sửa sang nhạc sĩ mã 2 đã có, thao tác nào đúng?
Chọn một đáp án

Bài luyện

Nhạc sĩ mã 1 đang có bản nhạc tham chiếu. Với quy tắc xóa mặc định của CSDL bài tập, xóa hàng nhạc sĩ mã 1 sẽ thế nào?
Chọn một đáp án

Bài luyện

Bài mã 1 đang được banthuam tham chiếu. Muốn xóa bài mã 1 nhưng hệ quản trị báo lỗi khóa ngoại. Nên làm gì?
Chọn một đáp án

Đang học