SQL新手,如果已经问过这个问题,我很抱歉。我希望创建一个包含3列X、Y和Z的表,在其中我将把X和Y值添加到表中。然后,我想创建一个存储过程,它将获取X和Y的行值,将它们相加,并将该值存储为表中的Z。我希望能够随时添加X和Y值,然后在计算Z之后运行存储过程。
CREATE TABLE XYZ
(
X INT NOT NULL,
Y INT NOT NULL,
Z INT NULL
);
GO
INSERT INTO XYZ (X, Y) VALUES (3, 5);
INSERT INTO XYZ (X, Y) VALUES (5, 8);
INSERT INTO XYZ (X, Y) VALUES (8, 13);
CREATE PROCEDURE CalculateZ
AS
SELECT X, Y, Z = X + Y
INTO XYZ
FROM XYZ;
GO
EXECUTE CalculateZ;
GO
INSERT INTO XYZ (X, Y) VALUES (13, 21);
EXECUTE CalculateZ;
GO
没有必要这么做。相反,将z
创建为计算列:
CREATE TABLE XYZ (
X INT NOT NULL,
Y INT NOT NULL,
Z AS (X + Y)
);
然后自动计算Z
(当行中的数据发生变化或被查询时(。没有必要更新该表。也不需要存储过程。
请在存储过程中尝试此操作。您希望对原始表使用UPDATE
,而不是INSERT
。
update XYZ
set z = x + y