PDA

View Full Version : Vấn đề về tạo và xóa khóa chính



congihonit
09-04-2012, 08:28
Chào các bạn!
Mình mới bắt đầu với môn SQL, mong các anh em chỉ bảo

Ví dụ mình tạo một table Giáo viên đơn giản như sau

create table GIAOVIEN
(
MSGV smallint primary key not null,
TENGV varchar(30)not null,
)

Trong bảng này khóa chính là MSGV và mình làm ngắn gọn như vầy ( Em đặt primary key sau kiểu dữ liệu )
MSGV smallint primary key not null,

Nếu em làm như vầy thì không vấn đề gì
MSGV smallint not null,
constraint PK_GIAOVIEN_MSGV primary key(MSQV)

–> Với các ngắn gọn như trên của em vậy sau này muốn xóa khóa chính thì có dc ko? sao em dùng lênh này mà xóa không được?
alter table GIAOVIEN
drop constraint PK_ GIAOVIEN_MSGV primary key(MSGV)

Mong các anh chị giải thích rỏ hơn chổ này.( Có phải nó bị ngay vấn đề đặt tên không )
Thanks!

mrPhanThanh
09-04-2012, 19:54
Bạn tạo khóa chính MSGV smallint primary key not null như vậy thì tên khóa chính sẽ được tạo ngẫu nhiên nên bạn xóa PK_ GIAOVIEN_MSGV sẽ không được.
Muốn xem tên bạn select bảng [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] lên coi.
Muốn xóa thì xóa theo tên trong đó chắc chắn là được.

congihonit
10-04-2012, 07:23
vâng, mình cũng nghĩ là doi vấn đề đặt tên nhưng muốn biết thêm thông tin.

mình vào xem key của nó là: PK__GIAOVIEN__6CB23D86014935CB Nhưng sao với tên này xóa cũng ko được

lệnh này [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] là lệnh gì? giải thích tác dụng và cách dùng dc ko bạn?

mrPhanThanh
10-04-2012, 10:10
Bạn không đọc kỹ nó là bảng [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] mà.
Bạn select tên khóa chính lưu vào biến a_còng_ten_khoa
Rồi bạn xóa nó theo lệnh


EXEC ('ALTER TABLE GIAOVIEN DROP CONSTRAINT ' + a_còng_ten_khoa)