sql—将主键列数据复制到同一表的其他列中

qlvxas9a  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(337)

有人能帮我把主键列数据复制到同一表的另一列吗?
示例:学生表

  1. ID PK
  2. Name
  3. age
  4. IID

我想看看 IID 列为null,然后我希望它用同一个表的主键列值进行更新,并寻找一些通用的方法来实现这一点,因为我们对多个表有这样的要求。
我们还有一张这样的table
dep公司

  1. DID PK
  2. DNAME
  3. IID

我正在努力,但没有找到合适的方法来做这件事。

bq9c1y66

bq9c1y661#

创建一个如下所示的存储过程,并将表名、主键列名和copy to列名传递给它。它将创建查询并执行。

  1. CREATE PROCEDURE [dbo].[UpdateColumnValue]
  2. @tableName as varchar(100),
  3. @copyFromColumnName as varchar(100),
  4. @copyToColumnName as varchar(100)
  5. AS
  6. BEGIN
  7. DECLARE @query as varchar(max);
  8. SET @query = ' UPDATE ' + @tableName +
  9. ' SET ' + @copyToColumnName + ' = ' + @copyFromColumnName +
  10. ' WHERE ' + @copyToColumnName + ' IS NULL';
  11. EXECUTE(@query);
  12. END
展开查看全部
ss2ws0br

ss2ws0br2#

您可以添加 Foreign Key 对同一表格的引用:

  1. CREATE TABLE DEPT (
  2. ID INT Primary Key,
  3. Name VARCHAR(50),
  4. age INT ,
  5. IID INT FOREIGN KEY REFERENCES DEPT(ID))

通过使用 UPDATE 声明:

  1. UPDATE DEPT
  2. SET IID=ID
  3. WHERE IID IS NULL

相关问题