SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

SQL Server Management Studio KHÔNG cho phép tôi tạo nhiều khóa ngoại cho nhiều khóa chính

Tôi nghĩ rằng bạn chắc chắn đã gặp phải một trục trặc kỳ lạ trong SSMS. Tôi đã có thể tạo giản đồ của bạn bằng SSMS 2014 mà không gặp bất kỳ lỗi nào. Nó đã điền trước ba cột khóa chính tổng hợp khi thêm FK mới. Tôi đã cẩn thận để đảm bảo rằng tất cả chúng đều được bỏ trống trước khi tôi bắt đầu thêm hai cột trong FK. Có thể SSMS nghĩ rằng một trong các hàng trống vẫn có dữ liệu trong đó.

Chỉnh sửa:Chỉ cần có một suy nghĩ nữa, SSMS biết để lưu vào bộ nhớ đệm bất kỳ thay đổi nào được thực hiện khi chỉnh sửa bảng. Ví dụ:nếu bạn sửa đổi hai bảng và mở cả hai cửa sổ chỉnh sửa. Sau đó, bạn thay đổi PK trong một cửa sổ và sau đó cố gắng tham chiếu nó trong cửa sổ thứ hai, nó sẽ bị lỗi vì nó đã lưu vào bộ đệm những gì giản đồ dành cho bảng đầu tiên khi cửa sổ được mở lần đầu tiên.

Đây là DDL đã tạo của tôi:

CREATE TABLE [dbo].[AppRegion](
    [appname] [nvarchar](50) NOT NULL,
    [isocode] [char](5) NOT NULL,
 CONSTRAINT [PK_AppRegion] PRIMARY KEY CLUSTERED 
(
    [appname] ASC,
    [isocode] ASC
)
) ON [PRIMARY]

CREATE TABLE [dbo].[Translation](
    [ResourceKey] [nvarchar](128) NOT NULL,
    [appname] [nvarchar](50) NOT NULL,
    [isocode] [char](5) NOT NULL,
    [text] [nvarchar](400) NULL,
 CONSTRAINT [PK_Translation] PRIMARY KEY CLUSTERED 
(
    [ResourceKey] ASC,
    [appname] ASC,
    [isocode] ASC
)
) ON [PRIMARY]

ALTER TABLE [dbo].[Translation]   ADD  CONSTRAINT [FK_Translation_AppRegion] FOREIGN KEY([appname], [isocode])
REFERENCES [dbo].[AppRegion] ([appname], [isocode])



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. cách chọn hàng dữ liệu từ trường giá trị được phân tách bằng dấu phẩy

  2. Cách đặt (kết hợp) hai khóa chính trong một bảng

  3. Cú pháp không chính xác gần 'for' SQL Server

  4. Theo dõi các thay đổi trong cơ sở dữ liệu Microsoft SQL Server

  5. Thời gian thực thi LINQ to SQL lâu hơn SSMS SQL 50 lần