Làm cách nào để tạo khóa tổng hợp với SQL Server Management Studio?


163

Làm cách nào để tạo khóa tổng hợp với SQL Server Management Studio?

Tôi muốn hai cột INT tạo thành danh tính (duy nhất) cho một bảng

Câu trả lời:


356

nhập mô tả hình ảnh ở đây

  1. Mở tab bảng thiết kế
  2. Đánh dấu hai trường INT của bạn (Ctrl / Shift + nhấp vào các khối màu xám trong cột đầu tiên)
  3. Nhấp chuột phải -> Đặt khóa chính

4
Để tô sáng nhiều trường, nhấp vào các khối ở phía trước cột "tên cột" và "kiểu dữ liệu", v.v. Ctrl / Shift + Nhấp vào các trường tên cột thực sự sẽ không làm gì cả.
Pimgd

3
Vì vậy, nếu một chuỗi là một chuỗi và chuỗi kia là int, điều đó là không thể? Dường như không phải là ...
B. Clay Shannon

3
Tôi sẽ đánh giá thấp điều này nhưng sau đó tôi nhận ra OP đặc biệt yêu cầu cách thực hiện trong SSMS. Bạn phải luôn thay đổi cơ sở dữ liệu kịch bản + nếu bạn sử dụng các công cụ như thế này, bạn sẽ không bao giờ học cách tự thay đổi
JonnyRaa

2
@JonnyLeed đó là một con ngựa rất cao của bạn trên đó. Có gì sai với GUI nếu đó là những gì mọi người thích?
leinad13

4
@ leinad13 Chắc tôi đã có một ngày tồi tệ! Nhưng vấn đề chính là chúng không lặp lại được và điều đó thường có nghĩa là mọi người đang thực hiện các thay đổi và chỉnh sửa ad hoc không kiểm soát để khắc phục các sự cố cơ sở dữ liệu / lược đồ. Đó là một dấu hiệu rất xấu - chúng không có giấy tờ (ví dụ: bằng cách sửa mã và ghi vào kiểm soát phiên bản và / hoặc có một công cụ tự động áp dụng các thay đổi đúng cho bất kỳ phiên bản cơ sở dữ liệu nào) và nếu bạn có nhiều hơn một cài đặt sau đó bạn đang gặp rắc rối nghiêm trọng vì cơ sở dữ liệu sẽ không có cùng một lược đồ
JonnyRaa

63

Đây là một số mã để làm điều đó:

-- Sample Table
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO

-- Add Constraint
ALTER TABLE myTable
    ADD CONSTRAINT pk_myConstraint PRIMARY KEY (Column1,Column2)
GO

Tôi đã thêm các ràng buộc như một tuyên bố riêng vì tôi cho rằng bảng của bạn đã được tạo.


Tôi đoán câu trả lời này phù hợp vì bạn có thể chạy câu này trong cửa sổ Truy vấn của SSMS ...;)
dance2die

2
Viết kịch bản FTW, và để đặt tên rõ ràng! Các định nghĩa bên ngoài ADD PRIMARY KEYvà bên trong PRIMARY KEYsẽ đặt tên ngẫu nhiên cho các khóa, điều này có thể khiến cho bajingo trở nên khó hiểu khi thuộc về nơi nếu bạn không có sơ đồ db + bảng.
Daevin

35
create table my_table (
    id_part1 int not null,
    id_part2 int not null,
    primary key (id_part1, id_part2)
)

14

Trong chế độ thiết kế (bảng nhấp chuột phải chọn sửa đổi) tô sáng cả hai cột nhấp chuột phải và chọn đặt khóa chính


7

Mở trình thiết kế bảng trong SQL Server Management Studio (nhấp chuột phải vào bảng và chọn 'Design')

Giữ phím Ctrl làm nổi bật hai hoặc nhiều cột trong lề bảng bên trái

Nhấn 'Phím' nhỏ trên thanh menu tiêu chuẩn ở trên cùng

Bạn đã hoàn tất..

:-)


5

Đánh dấu cả hai hàng trong chế độ xem thiết kế bảng và nhấp vào biểu tượng phím, giờ đây chúng sẽ là khóa chính tổng hợp.

Tôi không chắc chắn về câu hỏi của bạn, nhưng chỉ một cột trên mỗi bảng có thể là cột IDENTITY, không phải cả hai.


4
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO


ALTER TABLE myTable
    ADD  PRIMARY KEY (Column1,Column2)
GO
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.