这不是总结文章,是我随遇随记的流水文,免得以后忘记。sqlserver是2008,oracle是11g。因为本小白同时接触两种数据库,不得已要在blog上开记流水账了
insert into Tbl_COT(WaferID,VF1Avg,LOP1Avg) values('18DIV07P151224A38G',3.125,93.236),('18DIV08P151224A38G',3.115,92.236),('18DIV09P151224A38G',3.025,90.236)
insert All into Tbl_COT(WaferID,VF1Avg,LOP1Avg) values('18DIV07P151224A38G',3.125,93.236) into Tbl_COT(WaferID,VF1Avg,LOP1Avg) values ('18DIV08P151224A38G',3.115,92.236) into Tbl_COT(WaferID,VF1Avg,LOP1Avg) values('18DIV09P151224A38G',3.025,90.236)
select 1 from dual
update Tbl_COT set VF1Avg=3.10,LOP1Avg=90.203 where WaferID='18DIV08P151224A38G'
update Tbl_COT set (VF1Avg,LOP1Avg)=(select 3.10,90.203 from dual) where WaferID='18DIV08P151224A38G'
select 4 from MyDatabase.dbo.Test where 4=5
select 4 from sajet.Test where 4=5
这个是我自己试出来的,算是发现的小bug吧
有时我们会在一个创建了唯一键/索引的表中插入大量数值,游标方式检查每个记录是否符合唯一约束显然是费力不讨好的。数据库中各有办法实现“忽略重复值并插入不重复数值”的目的:
create unique index Ind_MachineNo on tbl_MachineAdd(MachineNo) with ignore_dup_key
创建唯一索引时没有什么特别的:
create unique index Ind_MachineNo on tbl_MachineAdd(MachineNo)
insert /*+ Ignore_row_on_dupkey_Index(tbl_MachineAdd(MachineNo)) */ all into tbl_MachineAdd(MachineNo) values('M01') into tbl_MachineAdd(MachineNo) values('M02') into tbl_MachineAdd(MachineNo) values('M01')
这个会报错:ORA-38917: 此操作不允许 IGNORE_ROW_ON_DUPKEY_INDEX 提示。但是使用select子句可以实现我们的功能。假设在另一张表
create table Dup(plane varchar2(20)); 中已经插入了数值'M01','M02','M01',
insert /*+ Ignore_row_on_dupkey_Index(tbl_MachineAdd(MachineNo)) */ into tbl_MachineAdd(MachineNo) select * from Dup;
则可以成功插入两条记录。