小编典典

表值函数是否可更新

sql

我对update语句有点困惑,但这就是我所拥有的:我有这两个雇员及其各自的字母数字代码。

select * from cm.bo.hotlist('08Z')
where State = 'ca'

select * from cm.bo.hotlist('06D')
where State = 'ca'

该表具有与每个员工相关联的某些城市,最上面的select语句具有与“ 08Z”相关联的这些城市的列表…比方说。

New York
Chicago

我想将这些城市转移到员工“ 06D”

我将如何更新?

对我来说,令人困惑的部分是表是一个表值函数。

任何帮助将不胜感激。谢谢你。

也许像这样:

update CITY cm.bo.hotlist('06D')

where CITY in (New York, Chicago)

阅读 148

收藏
2021-05-16

共1个答案

小编典典

因此,您想要的是:

Update cm.bo.hotlist('08Z')
set
<EmployeeID Column> = '06D'
where
city in ('New York', 'Chicago')

对于来到这里的每个人,是的,只要基础数据集是可更新的,则内联表值函数是可更新的。代码示例:

IF EXISTS(select * from sys.objects where name = 'test' and schema_id = schema_id('dbo')) BEGIN DROP TABLE dbo.test; END

CREATE TABLE dbo.test(Employee varchar(10), city varchar(10));

CREATE FUNCTION [dbo].[getEmployeeCities] ( @employee varchar(10) RETURNS TABLE  AS
RETURN  (  SELECT * from test where employee = @employee );

insert into dbo.test select 'A', 'Chicago';
insert into dbo.test select 'B', 'New York';

select * from dbo.test;

update dbo.getEmployeeCities('A')
set Employee = 'B'
where city = 'Chicago';

select * from dbo.test;
2021-05-16