Search This Blog

Sunday, November 20, 2016

THE SQL SERVER: on delete casscade, on update casscade in SQL

THE SQL SERVER: on delete cascade, on update cascade in SQL: Ràng buộc foreign key trong SQL Server. Ở đây mình có hai bảng sau:    Bảng học phí có _MaSV được tham chiếu từ bảng SinhVien. ...

on delete cascade, on update cascade in SQL


Ràng buộc foreign key trong SQL Server.
Ở đây mình có hai bảng sau:

   Bảng học phí có _MaSV được tham chiếu từ bảng SinhVien.
  Vấn đề đặt ra là khi ta xóa, sửa thông tin của một SinhVien  thì thông tin HocPhi của SinhVien tương ứng sẽ thay đổi theo.
  Để làm được điều đó thì các bạn phải thực hiện như sau:



Điều quan tâm ở đây là hai  dòng ON UPDATE CASCADE và ON DELETE CASCADE.
Khi có sự thay đổi dữ liệu từ bảng SinhVien thì lập tức thông tin bảng HocPhi sẽ thay đổi theo.
vd: ở  đây mình xóa một SINHVIEN.
Đây là dữ liệu ở hai bảng SinhVien và HocPhi.




Sau khi mình thực hiện câu lệnh: 
    

Kết quả thu được như sau:

Tương tự cho lệnh DELETE các bạn sẽ nhân được kết quả tương ứng.

Chúc các bạn thành công....!


Tuesday, November 15, 2016

Xóa dữ liệu SQL



Xóa dữ liệu trong bảng có chứa thuộc tính identity.


Mình có hình minh họa sau đây.



Ở đây mình có Field _PhieuYeuCauCTID là khóa chính và kiểu int tự động tăng (Identty).

Nếu cách bạn hay làm việc với CSDL  thì hay gặp vấn đề:

Khi chúng ta xóa dữ liệu bằng câu lệnh  Sql:

Delete <Table name>.

Khi đó dữ liệu của chúng ta sẽ được xóa hết, nhưng  khi chúng ta thêm dữ liệu và thì giá trị cửa trường _PhieuYeuCauCTID không tăng từ 1 mà nó bằng giá trị cao nhất trước khi bạn xóa bảng + 1.

vậy làm sao để cho nó bắt đầu lại từ 1.

Sql cung cấp cho ta hàm DBCC CKIDENT.



DBCC CHECKIDENT

(

'<Table Name>',

'FIELD IDENTITY',

          '0'

)

Chú thích :

'0' : là số mà bạn muốn nó quay trở về ban đâu:

ví dụ: nếu bạn để là số 0 thì khi thêm dữ liệu vào thì giá trị đâu tiền sẽ là 0 + 1 và tương tự nếu bạn để là số n thì số bắt đầu sẽ là n+1.

Chúc các bạn thành công...!