8 个解决方案
#1
你想改A表的主键?
#2
不行吗?
#3
同时更新与是否外键有什么关系,做触发器看看。
#4
-- =========================================
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================
IF OBJECT_ID('pk') IS NOT NULL
DROP TABLE pk
GO
CREATE TABLE pk(a int primary key not null,b int ,c int)
go
insert into pk
select 1,2,3 union all
select 2,2,6 union all
select 3,3,5 union all
select 4,8,4 union all
select 5,2,9
go
IF OBJECT_ID('b') IS NOT NULL
DROP TABLE b
GO
CREATE TABLE b(a int ,d int,constraint FK_b_a foreign key(a) references pk(a) on update cascade )
go
insert into b
select 1,3 union all
select 3,3 union all
select 5,6
go
update pk
set a=c
select * from pk
select * from b
/*------------
a b c
----------- ----------- -----------
3 2 3
4 8 4
5 3 5
6 2 6
9 2 9
(5 行受影响)
a d
----------- -----------
3 3
5 3
9 6
(3 行受影响)
-------*/
用级联就可以搞定了
#5
--楼主注意 你既然要更新pk主键a的值为C值 就要先保证表里的
C值无重复@
#7
谢谢大侠们了!
#8
学习了。
#1
你想改A表的主键?
#2
不行吗?
#3
同时更新与是否外键有什么关系,做触发器看看。
#4
-- =========================================
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================
IF OBJECT_ID('pk') IS NOT NULL
DROP TABLE pk
GO
CREATE TABLE pk(a int primary key not null,b int ,c int)
go
insert into pk
select 1,2,3 union all
select 2,2,6 union all
select 3,3,5 union all
select 4,8,4 union all
select 5,2,9
go
IF OBJECT_ID('b') IS NOT NULL
DROP TABLE b
GO
CREATE TABLE b(a int ,d int,constraint FK_b_a foreign key(a) references pk(a) on update cascade )
go
insert into b
select 1,3 union all
select 3,3 union all
select 5,6
go
update pk
set a=c
select * from pk
select * from b
/*------------
a b c
----------- ----------- -----------
3 2 3
4 8 4
5 3 5
6 2 6
9 2 9
(5 行受影响)
a d
----------- -----------
3 3
5 3
9 6
(3 行受影响)
-------*/
用级联就可以搞定了
#5
--楼主注意 你既然要更新pk主键a的值为C值 就要先保证表里的
C值无重复@
#6
#7
谢谢大侠们了!
#8
学习了。