Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

thay đổi giá trị khóa chính

Đây là một ví dụ về cách bạn có thể làm điều đó bằng cách sử dụng ON UPDATE CASCADE tùy chọn khóa nước ngoài. Phần bạn sẽ quan tâm là hai ALTER TABLE các câu lệnh.

Nếu bạn đang sử dụng IDENTITY cột cho các khóa chính của bạn thì việc này trở nên khó khăn hơn vì bạn không thể cập nhật IDENTITY cột.

CREATE TABLE Parent
(
    ParentId INT NOT NULL CONSTRAINT [PK_Parent] PRIMARY KEY CLUSTERED,
    Name VARCHAR(10) NOT NULL
)

CREATE TABLE Child 
(
  ChildId INT NOT NULL CONSTRAINT [PK_Child] PRIMARY KEY CLUSTERED,
  ParentId INT NOT NULL CONSTRAINT [FK_Child_ParentId] FOREIGN KEY REFERENCES Parent (ParentId),
  Name VARCHAR(10) NOT NULL
)

INSERT INTO Parent (ParentId, Name) VALUES (1, 'Bob')
INSERT INTO Parent (ParentId, Name) VALUES (2, 'Sue')

INSERT INTO Child (ChildId, Name, ParentId) VALUES (1, 'Alice', 1)
INSERT INTO Child (ChildId, Name, ParentId) VALUES (2, 'Billy', 2)

SELECT * FROM Child 

-- Drop foreign key constraint and re-add 
ALTER TABLE Child 
  DROP CONSTRAINT [FK_Child_ParentId]

ALTER TABLE Child
 ADD CONSTRAINT [FK_Child_ParentId] 
    FOREIGN KEY (ParentId) REFERENCES Parent (ParentId) ON UPDATE CASCADE 

UPDATE Parent SET ParentId = ParentId + 100 

SELECT * FROM Child --shows the new ParentIds 

DROP TABLE Child 
DROP TABLE Parent 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 tách, sắp xếp và hợp nhất giá trị

  2. Cách thoát đúng các số nhận dạng được phân tách trong SQL Server mà không sử dụng QUOTENAME

  3. SQL:Tích lũy cột &Tổng trên Hàng

  4. Truy vấn SQL tiếp tục chạy trong một thời gian rất dài nếu không tìm thấy cụm từ tìm kiếm

  5. Nhận tối thiểu hai giá trị trong SQL