昨天發(fā)現(xiàn)程序中數(shù)據(jù)分析的結果不對,重新進行分析后,原數(shù)據(jù)仍在,有值的字段被累計。心說,不對啊,是重新生成記錄后才分析的啊。難道忘了DELETE了?查代碼,發(fā)現(xiàn)有刪除語句。于是在查詢分析器中執(zhí)行,報錯。反復試幾次,明白了,Delete From不認表名別名!回頭想下,當初程序改完后主要是在Oracle中測的,SQLServer一直沒細測。
之所以要用別名,是因為where條件中需要用到子查詢寫一些條件,下面不寫那么復雜,僅說明一下問題。
結論:
(ORACLE適用) DELETE FROM TABLEA A WHERE A.FIELD1=10
(SQLSERVER適用) DELETE TABLEA FROM TABLEA A WHERE A.FIELD1=10
(Ora\SQL均適用) DELETE FROM TABLEA WHERE TABLEA.FIELD1=10
兩點經驗:
1、測試要全面;
2、要自信,寫程序時考慮的情況挺全的。
update情況
update T_report a
set a.status='1'
where a.report_Seq=1234
執(zhí)行失敗
update a
set a.status='1'
from T_report a
where a.report_Seq=1234
執(zhí)行成功
所以要做通用的程序,做好不使用別名
您可能感興趣的文章:- SqlServer2008誤操作數(shù)據(jù)(delete或者update)后恢復數(shù)據(jù)的方法
- sqlserver中drop、truncate和delete語句的用法
- SQLServer 2008中SQL增強之三 Merge(在一條語句中使用Insert,Update,Delete)
- SQL Server 添加Delete操作回滾日志方式