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

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

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

ID PK
Name
age
IID

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

DID PK
DNAME
IID

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

bq9c1y66

bq9c1y661#

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

CREATE PROCEDURE [dbo].[UpdateColumnValue]
    @tableName as varchar(100),
    @copyFromColumnName as varchar(100),
    @copyToColumnName as varchar(100)
AS
BEGIN

    DECLARE @query as varchar(max);

    SET @query = ' UPDATE ' + @tableName + 
                 ' SET ' + @copyToColumnName + ' = ' + @copyFromColumnName +
                 ' WHERE ' + @copyToColumnName + ' IS NULL';

    EXECUTE(@query);

END
ss2ws0br

ss2ws0br2#

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

CREATE TABLE  DEPT (
ID INT Primary Key,
Name VARCHAR(50),
age INT ,
IID INT FOREIGN KEY REFERENCES DEPT(ID))

通过使用 UPDATE 声明:

UPDATE DEPT
SET IID=ID
WHERE IID IS NULL

相关问题