Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

ubah nilai kunci utama

Berikut adalah contoh bagaimana Anda dapat melakukannya menggunakan ON UPDATE CASCADE opsi kunci asing. Bagian yang Anda akan tertarik adalah dua ALTER TABLE pernyataan.

Jika Anda menggunakan IDENTITY kolom untuk kunci utama Anda maka ini menjadi lebih sulit karena Anda tidak dapat memperbarui IDENTITY kolom.

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. Apakah ada fungsi seperti isdate() untuk datetime2?

  2. Permintaan divisi SQL Server

  3. Mendapatkan Subset Catatan bersama dengan Jumlah Catatan Total

  4. Simpan file di database SQL Server 2008 dengan Entity Framework

  5. Tutorial Partisi dan Partisi Tabel SQL Server