我正在使用oracle版本 Oracle Database 11g企业版11.2.0.1.0版 - 64位生产
我创建了一个名为xy的表,为其插入了值,然后又添加了一列。现在我只想为新添加的列添加值。是否有可能在不使用更新的情况下向新列添加值。
public class MainViewModel : MvxViewModel
{
private readonly IMvxNavigationService _navigationService;
public MainViewModel(IMvxNavigationService navigationService)
{
_navigationService = navigationService;
}
public override async Task Initialize()
{
await _navigationService.Navigate<FirstViewModel>();
}
}
现在我添加了一个列到此表。
create table xy(x1 number, y1 number);
insert into xy(x1,y1) values(1, 1);
insert into xy(x1,y1) values(2, 2);
insert into xy(x1,y1) values(3, 3);
select * from xy;
X1 Y1
---------- ----------
1 1
2 2
3 3
现在,我需要为新添加的列(z1)添加值。
我尝试使用以下内容但仅插入新行,是的,我知道如果我们使用insert,它将仅添加新行。
alter table xy add z1 number;
因此,只是在没有使用更新的情况下查看是否有任何替代方法,可以在集合或SQL的帮助下。
提前感谢您的帮助。
答案 0 :(得分:1)
使用MERGE
声明:
MERGE INTO xy dst
USING ( SELECT ROWID AS rid, ROWNUM AS rn FROM xy ) src
ON ( src.RID = dst.ROWID )
WHEN MATCHED THEN
UPDATE SET z1 = rn;
它没有使用UPDATE
语句,但会更新匹配行中的值。
在没有UPDATE
的情况下执行此操作的另一种方法是将所有行存储在集合中,然后DELETE
行并使用新值重新创建它们(但这似乎有点过分以避免使用UPDATE
声明。