Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

zmień wartość klucza podstawowego

Oto przykład, jak możesz to zrobić za pomocą ON UPDATE CASCADE opcja klucza obcego. Część, która Cię zainteresuje, to dwie ALTER TABLE sprawozdania.

Jeśli używasz IDENTITY kolumn dla kluczy podstawowych, staje się to trudniejsze, ponieważ nie można zaktualizować IDENTITY kolumna.

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. Jak zmienić nazwę tabeli w SQL Server

  2. Podłączanie Pythona 3.3 do serwera microsoft sql 2008

  3. STZawiera w kolumnie Geografia

  4. Używanie SQL Server jako magazynu obrazów

  5. Jak sformatować datetime jako M/D/RRRR w SQL Server?