sql >> Database >  >> RDS >> Sqlserver

waarde primaire sleutel wijzigen

Hier is een voorbeeld van hoe u dit kunt doen met de ON UPDATE CASCADE buitenlandse sleutel optie. Het onderdeel waarin u geïnteresseerd zult zijn, zijn de twee ALTER TABLE verklaringen.

Als u IDENTITY gebruikt kolommen voor uw primaire sleutels, wordt dit moeilijker omdat u een IDENTITY . niet kunt bijwerken 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. Hoe de gegevensbronverbinding correct te sluiten?

  2. PostgreSQL IF-instructie

  3. SQL-query met binaire gegevens (PHP en MySQL)

  4. Perfect Storm voor het upgraden naar een moderne versie van SQL Server