sql >> Databasteknik >  >> RDS >> Sqlserver

ändra primärnyckelns värde

Här är ett exempel på hur du kan göra det med ON UPDATE CASCADE alternativ för främmande nyckel. Den del du kommer att vara intresserad av är de två ALTER TABLE uttalanden.

Om du använder IDENTITY kolumner för dina primärnycklar så blir detta svårare eftersom du inte kan uppdatera en IDENTITY kolumn.

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. hur man ekar specialtecken som åäö med utf8

  2. Kan jag använda Oracles analytiska funktion här?

  3. AMD EPYC 7002-seriens processorer och SQL Server

  4. Hur man väljer data från en nyckelvärdespartabell