Nao*_*aor 0 sql sql-server primary-key sql-server-2008
我有10张桌子.每个表由其他5个表的外键引用.
我需要更改这10个表的主键值.有没有办法改变它,以便它会自动更改所有外键?
我正在使用sql server 2008并拥有管理工作室.
以下是使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15009 次 |
| 最近记录: |