作者charleshu (Analog Engineer)
看板Database
标题Re: [SQL ] 删除第n列的语法
时间Sun Jul 11 13:51:29 2010
※ 引述《licheer (HOPE)》之铭言:
: 找了很多删除列的语法
: 大多是要给足够的条件
: DELETE FROM Store_Information
: WHERE store_name = "Los Angeles"
: 例如我的资料有10笔,只要删除第4笔
: 要用什麽语法可以指定删除第4笔就好呢?
: 谢谢
SQL 的 Result Set在观念上就是一个 Set,集合是无序的, 只保证它符合你筛选的条件.
SQL Server并不保证每笔资料列的顺序, 且在连线有交易在跑的情况下, 你现在看到的任
何一笔资料都可能马上别的Connection给删除或修改了, 所以删除第四笔常常是没有意义
的, 除非你的Table是用作资料分析, 没有其他交易同时执行, 但就算如此, 若是你的SQL
Statement 里没有Order叙述, 一般的SQL Server并不保证每次传回的资料列会保持顺序.
尤其是在多核心机器上, optimizer可能决定同时以两个或以上的核心来处理你的Rquest,
而我们都知道在这种情况下,因为Race condition, 无法保证它们的执行顺序.
假如你看到某笔资料, 它位於第4笔的位置, 而你想删除它, 最建议的方法是, 把它每个
栏位的值都记下来, 以Delete FROM TABLE WHERE Field1=Value1 and Field2=Value2...
的方式来删除纪录, 请先开始一笔交易, 若Delete了0笔, 就知道这笔资料被别人异动过
了,若Delete了大於一笔,就是有别人修改或新增了一笔内容相同的纪录, 根据你的程式
逻辑,决定要Commit或Rollback它.在实用上,建议你以这种方式来处理, 要不, 就只好建
议你多多备份, 以免删除了预期之外的资料了.
--
Do not depend on others without effort...
当我年轻时,请教别人问题时常听到上面那句话. 当时心里偶而会有些小小抱怨.
当时间过去,我偶而会想到上面那句话, 心中十分感谢当初告诉我那句话的人.
当发现问题时,最有价值的不是问题的答案,
而是找到解决的方向,并在努力的过程里具备解决问题的能力.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.236.108
1F:推 licheer:原来是这样,谢谢! 07/15 08:35