如何修改Sql server 2008 r2 FK的父表

如何修改Sql server 2008 r2 FK的父表,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我的表中有一个FK,但我想修改FK的父表。那么有没有一个alter命令可以实现这一点呢?或者我需要删除FK并创建一个新的? 谢谢将此添加到您的PK中,它将自动为您更新所有FK: ON UPDATE CASCADE 有关详细信息,请阅读 编辑根据您的评论,如果要更改PK数据类型,则取决于更改: 如果旧类型可以隐式转换为新类型而不丢失: 首先更改PK类型 将FK类型更改为相同类型 如果无法将旧类型隐式转换为新类型而不发生任何损失: 首先打破关系(即删除FK限制/索引) 转换PK。如果需要修改数

我的表中有一个FK,但我想修改FK的父表。那么有没有一个alter命令可以实现这一点呢?或者我需要删除FK并创建一个新的?
谢谢

将此添加到您的PK中,它将自动为您更新所有FK:

ON UPDATE CASCADE
有关详细信息,请阅读

编辑根据您的评论,如果要更改PK数据类型,则取决于更改:

  • 如果旧类型可以隐式转换为新类型而不丢失:
  • 首先更改PK类型
  • 将FK类型更改为相同类型
  • 如果无法将旧类型隐式转换为新类型而不发生任何损失:
  • 首先打破关系(即删除FK限制/索引)
  • 转换PK。如果需要修改数据,请将旧值和新值保存在临时表中
  • 转换FK。如果PK数据在上一步中更改,则使用临时表中的映射值更新FK
  • 再次创建关系(即创建FK限制/索引)
要修改数据类型,请使用
ALTER
命令,语法如下:

ALTER TABLE table_name
ALTER COLUMN column_name datatype
示例:

ALTER TABLE table_name
ALTER COLUMN id NUMBER(10,2);

ALTER TABLE table_name
ALTER COLUMN id VARCHAR(20);

有关详细信息,您可以阅读。

将此添加到您的PK中,它将自动为您更新所有FK:

ON UPDATE CASCADE
有关详细信息,请阅读

编辑根据您的评论,如果要更改PK数据类型,则取决于更改:

  • 如果旧类型可以隐式转换为新类型而不丢失:
  • 首先更改PK类型
  • 将FK类型更改为相同类型
  • 如果无法将旧类型隐式转换为新类型而不发生任何损失:
  • 首先打破关系(即删除FK限制/索引)
  • 转换PK。如果需要修改数据,请将旧值和新值保存在临时表中
  • 转换FK。如果PK数据在上一步中更改,则使用临时表中的映射值更新FK
  • 再次创建关系(即创建FK限制/索引)
要修改数据类型,请使用
ALTER
命令,语法如下:

ALTER TABLE table_name
ALTER COLUMN column_name datatype
示例:

ALTER TABLE table_name
ALTER COLUMN id NUMBER(10,2);

ALTER TABLE table_name
ALTER COLUMN id VARCHAR(20);

有关详细信息,您可以阅读。

将此添加到您的PK中,它将自动为您更新所有FK:

ON UPDATE CASCADE
有关详细信息,请阅读

编辑根据您的评论,如果要更改PK数据类型,则取决于更改:

  • 如果旧类型可以隐式转换为新类型而不丢失:
  • 首先更改PK类型
  • 将FK类型更改为相同类型
  • 如果无法将旧类型隐式转换为新类型而不发生任何损失:
  • 首先打破关系(即删除FK限制/索引)
  • 转换PK。如果需要修改数据,请将旧值和新值保存在临时表中
  • 转换FK。如果PK数据在上一步中更改,则使用临时表中的映射值更新FK
  • 再次创建关系(即创建FK限制/索引)
要修改数据类型,请使用
ALTER
命令,语法如下:

ALTER TABLE table_name
ALTER COLUMN column_name datatype
示例:

ALTER TABLE table_name
ALTER COLUMN id NUMBER(10,2);

ALTER TABLE table_name
ALTER COLUMN id VARCHAR(20);

有关详细信息,您可以阅读。

将此添加到您的PK中,它将自动为您更新所有FK:

ON UPDATE CASCADE
有关详细信息,请阅读

编辑根据您的评论,如果要更改PK数据类型,则取决于更改:

  • 如果旧类型可以隐式转换为新类型而不丢失:
  • 首先更改PK类型
  • 将FK类型更改为相同类型
  • 如果无法将旧类型隐式转换为新类型而不发生任何损失:
  • 首先打破关系(即删除FK限制/索引)
  • 转换PK。如果需要修改数据,请将旧值和新值保存在临时表中
  • 转换FK。如果PK数据在上一步中更改,则使用临时表中的映射值更新FK
  • 再次创建关系(即创建FK限制/索引)
要修改数据类型,请使用
ALTER
命令,语法如下:

ALTER TABLE table_name
ALTER COLUMN column_name datatype
示例:

ALTER TABLE table_name
ALTER COLUMN id NUMBER(10,2);

ALTER TABLE table_name
ALTER COLUMN id VARCHAR(20);

有关完整的详细信息,您可以阅读。

看起来您正在查找
alter
语句,但由于您没有确切提到要修改的内容;我假设您想要更改列数据类型大小。您可以这样做(例如,您希望将大小从10更改为15)

编辑:

在这种情况下,这就是你应该做的。您需要删除现有约束并重新创建约束以指向
TableC

alter table TableA
drop constraint your_FK_constraint_name

alter table TableA
add constraint constraint_name 
FOREIGN KEY (column_name) references TableC(some other column name)
例如:

alter table sample2
drop constraint FK__sample2__realnam__09DE7BCC

alter table sample2
add constraint FK__sample2__realnam 
FOREIGN KEY (realname) references sample1(name)

看起来您正在查找
alter
语句,但由于您没有确切提到要修改的内容;我假设您想要更改列数据类型大小。您可以这样做(例如,您希望将大小从10更改为15)

编辑:

在这种情况下,这就是你应该做的。您需要删除现有约束并重新创建约束以指向
TableC

alter table TableA
drop constraint your_FK_constraint_name

alter table TableA
add constraint constraint_name 
FOREIGN KEY (column_name) references TableC(some other column name)
例如:

alter table sample2
drop constraint FK__sample2__realnam__09DE7BCC

alter table sample2
add constraint FK__sample2__realnam 
FOREIGN KEY (realname) references sample1(name)

看起来您正在查找
alter
语句,但由于您没有确切提到要修改的内容;我假设您想要更改列数据类型大小。您可以这样做(例如,您希望将大小从10更改为15)

编辑:

在这种情况下,这就是你应该做的。您需要删除现有约束并重新创建约束以指向
TableC

alter table TableA
drop constraint your_FK_constraint_name

alter table TableA
add constraint constraint_name 
FOREIGN KEY (column_name) references TableC(some other column name)
例如:

alter table sample2
drop constraint FK__sample2__realnam__09DE7BCC

alter table sample2
add constraint FK__sample2__realnam 
FOREIGN KEY (realname) references sample1(name)

看起来您正在查找
alter
语句,但由于您没有确切提到w