你不能用一个SQL语句更新多个表中的列。 执行此操作的一种方法是创建使用多个更新语句更新多个表的存储过程。 例如:
CREATE PROCEDURE p_UpdateLogin
(
@id INTEGER,
@name VARCHAR(10),
@phone VARCHAR(10),
@email_id VARCHAR(100),
@pwd VARCHAR(20),
@role NVARCHAR(20)
)
AS
BEGIN
BEGIN TRANSACTION [Tran1]
BEGIN TRY
UPDATE login
SET login.email_id = @email_id,
login.pwd = @pwd,
login.role = @role
FROM login
INNER JOIN reg
ON login.[l_id] = reg.[r_id]
WHERE reg.[r_id] = @id
UPDATE reg
SET reg.name = @name,
reg.phone = @pwd
WHERE reg.[r_id] = @id
COMMIT TRANSACTION [Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [Tran1]
END CATCH
END
使用下面的查询来执行存储过程:
EXEC dbo.p_UpdateLogin @id = 50, @name = 'Saurabh',
@phone = '1234567890', @email_id = '[email protected]',
@pwd = '******', @role = 'Super';
正确的语法取决于您所使用的数据库,这是...? –
多表连接语法取决于数据库;你应该添加标签来表明你正在使用哪个数据库。你也应该将问题的格式设置为可读;知道答案的人很有可能不会花时间尝试阅读它。 –
你正在使用哪些DBMS? –