使用临时表更新多个列和行

时间:2017-06-07 04:51:09

标签: sql sql-server database tsql

我尝试在条件下更新多个列值,但它只更新了单个列。我无法弄清楚为什么它没有更新所有列。

这是我的SP。

declare @p3 dbo.UpdateIdeaInline
insert into @p3 values(N'15',N'Validity',N'1')
insert into @p3 values(N'15',N'DeadLine',N'15-Jun-2017')
insert into @p3 values(N'14',N'Validity',N'0')
insert into @p3 values(N'14',N'DeadLine',N'15-Jun-2017')

exec MIC_UpdateIdeaInline @UpdatedBy=1,@UpdatedOn='2017-06-06 21:45:19.863',@UpdateRecords=@p3
go

调用SP时,这些是我的参数。

start = input("Please enter a starting value: ")
print("exp    res\n1      " + str(int(start)**1) + "\n")
print("2      " + str(int(start)**2) + "\n")
print("3      " + str(int(start)**3) + "\n")
print("4      " + str(int(start)**4) + "\n")

UpdateIdeaInline 是表格类型。它的第一列包含

  • 编号
  • 的ColumnName
  • ColumnValue

    正如您所看到的,我想为相同的ID 14和15更新Column(validity和DeadLine)。但它只更新了有效性列。

1 个答案:

答案 0 :(得分:0)

那是因为您的更新是单原子事务。 Update语句将表更新两次,因为在UpdateRecords表中ID是重复的。因此,在第二次更新时,它无法读取第一次更新更新的值。

实施例: 你有10和15的值。

现在您发布一个UPDATE加入UpdateRecord表,该表具有两个相同的ID,但每个ID用于不同的列。

E.g。 UpdateRecord有 'Col1',30 'Col2',40

首次更新后:

10 - > 30(待定)

15 - > 15(待定)

第二次更新后:

10 - > 10(待定)

15 - > 40(待定)

提交交易后:

10 - →10

15 - →40

相关问题