sql-server - 如何将列移动到另一个表,替换 FK?

标签 sql-server

我有 3 个表,其中一个是另外两个表的父表。我想分离出一列,根据 FK 将其移动到子表中。这需要在 SQL 中完成(没有工作室快捷方式)。

我有 2 个这样的表:

TABLE A:
internalID  |  id  | otherdata
============+======+===========
  myid      |   1  | ...
------------+------+-----------
  my2ndid   |   2  | ...
------------+------+-----------
  1234      |   3  | ...
------------+------+-----------
  5678      |   4  | ...

TABLE B:
internalID  |  FK_toTableA  | otherdata
============+===============+===========
  NULL      |       1       | ...
------------+---------------+-----------
  NULL      |       2       | ...

TABLE C:
internalID  |  FK_toTableA  | otherdata
============+===============+===========
  NULL      |       3       | ...
------------+---------------+-----------
  NULL      |       4       | ...

我想将 internalIDTABLE A 移动或复制到 TABLE BTABLE C -根据FK关系,然后从TABLE A中删除internalID列。

生成的表格应如下所示:

TABLE A:
  id  | otherdata
======+===========
   1  | ...
------+-----------
   2  | ...
------+-----------
   3  | ...
------+-----------
   4  | ...

TABLE B:
internalID  |  FK_toTableA  | otherdata
============+===============+===========
  myid      |       1       | ...
------------+---------------+-----------
  my2ndid   |       2       | ...

TABLE C:
internalID  |  FK_toTableA  | otherdata
============+===============+===========
  1234      |       3       | ...
------------+---------------+-----------
  5678      |       4       | ...

SQL 版本:13.0.4001.0

最佳答案

您可以简单地使用update语句:

update b
    set b.internalID  = a.internalID 
from b inner join
     a
     on a.id = b.FK_toTableA; 

之后,您可以从表 a 中删除列 internalId

alter table a
    drop column internalId;

关于sql-server - 如何将列移动到另一个表,替换 FK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898001/

相关文章:

sql - Like Operator 检索结果

sql - 根据字符修剪字符串

sql-server - 删除 SQL 行,忽略所有外键和约束

sql - 将现有 SQL Server 2005 数据库中的数据类型 varchar 更改为 nvarchar。有什么问题吗?

sql-server - 如何将可变数量的参数传递给 SQL Server 存储过程?

mysql - HTTP 500 - 内部服务器错误 - 部署示例 Tomcat Web 应用程序

sql-server - 根据子记录更新父表

sql-server - Qt:从远程数据库传输数据时速度低

sql - 我可以在 T-SQL 中循环遍历表变量吗?

c# - 如何访问数据流脚本组件中现有的 ADO.NET 连接管理器