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

Đề tài: Cách tạo ràng buộc khóa chính khóa ngoại trong SQL?

  1. #1
    Ngày gia nhập
    03 2010
    Bài viết
    43

    Mặc định Cách tạo ràng buộc khóa chính khóa ngoại trong SQL?

    Chào mọi người. em có 1 bảng như thế này :
    Code:
    CREATE TABLE tblSach
    (
    	 MaSach NVARCHAR(10)PRIMARY KEY NOT NULL,
    	 TenSach NVARCHAR(50)NOT NULL,
    	 MaLV NVARCHAR(10)NOT NULL,
    	 MaNXB NVARCHAR(10)NOT NULL,
    	 SoLuong INT NOT NULL,
    	 GiaNhap FLOAT NOT NULL,
    	 GiaBan FLOAT NOT NULL
    )
    CREATE TABLE tblTacGia
    (
    	MaTG NVARCHAR(10) PRIMARY KEY,
    	TenTG NVARCHAR(50)NOT NULL
    	
    )
    CREATE TABLE tblTacGia_Sach
    (
    	MaSach NVARCHAR(10)NOT NULL,
    	MaTG NVARCHAR(10)NOT NULL
    )
    giờ em phải đặt ràng buộc như thế nào để bảng tblTacGia_Sach có MaSach và MaTG là khóa chính,
    đồng thời là khóa ngoại của 2 bảng tblSach và tblTacGia
    em đã thử thêm vào bảng tblTacGia_Sach :
    Code:
    CREATE TABLE tblTacGia_Sach
    (
    	MaSach NVARCHAR(10)NOT NULL,
    	MaTG NVARCHAR(10)NOT NULL
    	CONSTRAINT pr PRIMARY KEY (MaSach,MaTG),
    	CONSTRAINT fk1 FOREIGN KEY (MaSach) REFERENCES tblSach(MaSach),
    	CONSTRAINT fk2 FOREIGN KEY (MaTG) REFERENCES tblTacGia(MaTG)
    	
    )
    nhưng vẫn báo lỗi
    Code:
    Msg 1767, Level 16, State 0, Line 1
    Foreign key 'fk1' references invalid table 'tblSach'.
    Msg 1750, Level 16, State 0, Line 1
    Could not create constraint. See previous errors.
    pro nào giúp e với em mới học SQL nên không hiểu :((
    Đã được chỉnh sửa lần cuối bởi nghiameo : 24-03-2011 lúc 03:31 PM. Lý do: thiếu

  2. #2
    Ngày gia nhập
    03 2010
    Nơi ở
    B89 - HY
    Bài viết
    36

    Del 2 dòng này :

    SQL Code:
    1. CONSTRAINT fk1 FOREIGN KEY (MaSach) REFERENCES tblSach(MaSach),
    2.     CONSTRAINT fk2 FOREIGN KEY (MaTG) REFERENCES tblTacGia(MaTG)

    Chạy bảng bình thường sau đó Alter các dòng này là ok.


    SQL Code:
    1. GO
    2. ALTER TABLE [dbo].[tblTacGia_Sach]  WITH CHECK ADD  CONSTRAINT [FK_TGS_S] FOREIGN KEY([MaSach])
    3. REFERENCES [dbo].[tblSach] ([MaSach])
    4. GO
    5. ALTER TABLE [dbo].[tblTacGia_Sach]  WITH CHECK ADD  CONSTRAINT [fk1] FOREIGN KEY([MaTG])
    6. REFERENCES [dbo].[tblTacGia] ([MaTG])
    7. GO
    8. ALTER TABLE [dbo].[tblTacGia_Sach] CHECK CONSTRAINT [fk1]
    9. GO
    10. ALTER TABLE [dbo].[tblTacGia_Sach] CHECK CONSTRAINT [fk2]
    Câu hỏi: Hãy cho biết em trải nghiệm được điều gì qua lớp học này?
    Trả lời : Nếu em chỉ có 1 giờ để sống, em sẽ dùng nó để theo học lớp này vì nó dường như dài vô tận.

  3. #3
    Ngày gia nhập
    01 2010
    Bài viết
    1

    GO
    ALTER TABLE [dbo].[tblTacGia_Sach] CHECK CONSTRAINT [fk2]

    anh gì đó ơi...dòng này vẫn báo lỗi

    Msg 4917, Level 16, State 0, Line 1
    Constraint 'fk2' does not exist.
    Msg 4916, Level 16, State 0, Line 1
    Could not enable or disable the constraint. See previous errors.

  4. #4
    Ngày gia nhập
    04 2011
    Bài viết
    7

    Red face Rất vui khi được giúp bạn.

    Thật ra bạn không nên đặt hai khoá ngoại như thế. dòng nào phải rõ ràng.
    CREATE TABLE tblSach
    (
    MaSach NVARCHAR(10) NOT NULL,
    TenSach NVARCHAR(50)NOT NULL,
    MaLV NVARCHAR(10)NOT NULL,
    MaNXB NVARCHAR(10)NOT NULL,
    SoLuong INT NOT NULL,
    GiaNhap FLOAT NOT NULL,
    GiaBan FLOAT NOT NULL
    Primary key(MaSach)
    )
    CREATE TABLE tblTacGia
    (
    MaTG NVARCHAR(10),
    TenTG NVARCHAR(50)NOT NULL
    Primary key(MaTG)
    )
    CREATE TABLE tblTacGia_Sach
    (
    MaSach NVARCHAR(10)NOT NULL,
    MaTG NVARCHAR(10)NOT NULL
    Primary key(MaSach,MaTG)
    )

    Alter Table tblTacGia_Sach
    add constraint FK_TacGiaSach_Sach foreign key(MaSach) references tblSach(MaSach)

    alter table tblTacGia_Sach
    Add constraint FK_TacGiaSach_TacGia foreign Key(MaTG) references tblTacGia(MaTG)

    Mình sửa như thế đó có vấn đề gì bạn nói ha. Góp ý để cùng nhau tiến bộ ^^!
    *(`'·.¸(`'·.¸*¤*¸.·'´)¸.·'´)*
    »~:¤.·º`·. I LOVE YOU .·´º·.¤:~«
    *(¸.·'´(¸.·'´*¤*`'·.¸)`'·.¸)*
    <---------------------->¸.·'´*SS2G*`'·.¸<---------------------->

  5. #5
    Ngày gia nhập
    10 2010
    Bài viết
    3

    Thanks ! mọi người đã hướng dẫn đang không biết chổ này !
    Điều quan trọng không phải chúng ta sống được bao lâu mà chúng ta phải sống như thế nào

  6. #6
    Ngày gia nhập
    01 2012
    Nơi ở
    localhost
    Bài viết
    56

    Mặc định Cách tạo ràng buộc khóa chính khóa ngoại trong SQL?

    Nếu mình không lầm thì mình gom luôn trong lệnh tạo bảng được:
    SQL Code:
    1. CREATE TABLE tblTacGia_Sach
    2. (
    3.     MaSach NVARCHAR(10)NOT NULL thêm tham chiếu chỗ này,
    4.     MaTG NVARCHAR(10)NOT NULL thêm tham chiếu chỗ này,
    5.     PRIMARY KEY (MaSach,MaTG)
    6.    
    7. )

    [NGOÀI LỀ] Đây là ví dụ thêm mấy cái khóa nè:
    SQL Code:
    1. CREATE TABLE MUCCAUHOI
    2. (
    3.     maDe INT NOT NULL,
    4.     soThuTuBo INT NOT NULL,
    5.     soThuTuChiMuc INT NOT NULL,
    6.     thuTuDapAn VARCHAR(50) NULL,
    7.     maCauHoi INT FOREIGN KEY REFERENCES CAUHOI(maCauHoi),
    8.     PRIMARY KEY(maDe, soThuTuBo, soThuTuChiMuc),
    9.     FOREIGN KEY(maDe, soThuTuBo) REFERENCES BODEKIEMTRA(maDe, soThuTuBo)
    10. )
    Rẹt rẹt..

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

    ???? Các bác ơi em mới học cái nay kực gà luôn. Em tạo bảng trong sql như trong ACCESS giờ e muốn view code để thêm các điều kiện, và sửa thì làm thế nào???? các bác chỉ em với càng nhanh càng tố thank các bác nhiều.
    " I HAVE A DREAM ,A BELIEVE TO
    HOPE "

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

    VD: e có đoạn code sau:
    Create Table SinhVien
    (
    MaSV char(15) primary key,
    TenSV nvarchar(20) ,
    GioiTinh bit ,
    NgaySinh datetime ,
    QueQuan nvarchar(50) ,
    MaLop char(5) foreign key references Lop(MaLop)
    )
    Giờ e phải viết vào cửa sổ nào để nó tạo ra 1 bảng cho mình. và có bảng rồi thì làm sao để view lại co de như vậy????
    " I HAVE A DREAM ,A BELIEVE TO
    HOPE "

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: 0
    Bài viết cuối: 08-08-2013, 10:11 PM
  2. Cách bắt lỗi ngoại lệ về khóa ngoại khóa chính trong ADO.NET?
    Gửi bởi bachkim20 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 03-01-2013, 03:45 PM
  3. Tạo khóa ngoại khi khóa chính gồm nhiều thuộc tính
    Gửi bởi Sess_Kakashi trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 28-11-2011, 12:12 PM
  4. làm sao lấy dữ liệu của khóa chính cho sang khóa ngoại của 1 bảng
    Gửi bởi thuan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 32
    Bài viết cuối: 29-05-2011, 08:05 PM
  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