如果主键不是自增的数据类型 是可以修改的 当然 不能违反主键唯一性约束。
if object_id('primarytbl') is not null
drop table primarytbl
go
--建主表
create table primarytbl
(
ID int primary key, --主键
aa int,
bb int,
cc int
)
go
if object_id('foreigntbl') is not null
drop table foreigntbl
go
--建外表
create table foreigntbl
(
ID int primary key, --主键
aa int
foreign key references primarytbl(ID) --建立外键
on update cascade, --更新级联
dd int,
ee int
)
go
--插入主表数据
insert into primarytbl
select 1, 1, 2, 3 union all
select 2, 2, 3, 4 union all
select 3, 3, 4, 5 union all
select 4, 4, 5, 6 union all
select 5, 5, 6, 7 union all
select 6, 6, 7, 8
go
--插入外表数据
insert into foreigntbl
select 1, 1, 2, 2 union all
select 2, 1, 3, 3 union all
select 3, 2, 4, 4 union all
select 4, 2, 4, 4 union all
select 5, 2, 5, 5 union all
select 6, 3, 6, 6 union all
select 7, 4, 7, 7
go
--显示主外表信息
select *
from primarytbl
select *
from foreigntbl
go
--primarytbl
/*
ID aa bb cc
----------- ----------- ----------- -----------
1 1 2 3
2 2 3 4
3 3 4 5
4 4 5 6
5 5 6 7
6 6 7 8
--foreigntbl
ID aa dd ee
----------- ----------- ----------- -----------
1 1 2 2
2 1 3 3
3 2 4 4
4 2 4 4
5 2 5 5
6 3 6 6
7 4 7 7
*/
--更新主表主键
update primarytbl
set ID = 8
where ID =1
go
--结果
select *
from primarytbl
select *
from foreigntbl
go
/*
--primarytbl
ID aa bb cc
----------- ----------- ----------- -----------
2 2 3 4
3 3 4 5
4 4 5 6
5 5 6 7
6 6 7 8
8 1 2 3
--foreigntbl
ID aa dd ee
----------- ----------- ----------- -----------
1 8 2 2
2 8 3 3
3 2 4 4
4 2 4 4
5 2 5 5
6 3 6 6
7 4 7 7
*/
drop table foreigntbl
drop table primarytbl
默认是不能修改的,如果想修改,必须修改SQL SERVER的系统设置才可以。。