Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

промяна на стойността на първичния ключ

Ето пример как можете да го направите с помощта на ON UPDATE CASCADE опция за външен ключ. Частта, която ще ви интересува, са двете ALTER TABLE изявления.

Ако използвате IDENTITY колони за вашите първични ключове, тогава това става по-трудно, тъй като не можете да актуализирате IDENTITY колона.

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. Как да извикам съхранена процедура в съхранена процедура?

  2. CURRENT_TIMESTAMP Примери в SQL Server (T-SQL)

  3. свържете се към sql сървър с помощта на jdbc

  4. sql:МЕЖДУ v1 И v2

  5. Как да получите всички регистрационни файлове на транзакции (вмъкнете актуализация изтриване) за конкретна таблица в SQL Server 2008