sql >> Databáze >  >> RDS >> Sqlserver

změnit hodnotu primárního klíče

Zde je ukázka, jak to můžete provést pomocí ON UPDATE CASCADE možnost cizího klíče. Část, která vás bude zajímat, jsou dvě ALTER TABLE prohlášení.

Pokud používáte IDENTITY sloupce pro primární klíče, pak je to složitější, protože nemůžete aktualizovat IDENTITY sloupec.

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. Oracle Regexp k nahrazení \n,\ra \t mezerou

  2. Odstraňte čtyři bajtové znaky UTF-8 v klasickém ASP/VBScript (související s MySQL)

  3. Jak získat číselné typy z MySQL pomocí PDO?

  4. Řádky MySQL se při ukončení programu vymažou