新足迹

 找回密码
 注册

精华好帖回顾

· 五年的生活,七年的回忆 (2007-9-4) poloand · 【说说小生意的那些事】开店的前尘往事 (2010-1-23) mark214
· 三年理财经验谈--流水帐 (2007-12-21) 大飞熊 · 跌跌撞撞HPT一次通过,喜一个! (2006-11-10) fantergaruo
Advertisement
Advertisement
查看: 2651|回复: 34

SQL 大仙 求教 [复制链接]

2010年度奖章获得者

发表于 2010-11-10 14:52 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
为什么 我 Truncate 一个 table 时不行,说有foreign key constraint.

但我 delete 就行呢?

这是怎么个说法?
Advertisement
Advertisement

退役斑竹

发表于 2010-11-10 14:55 |显示全部楼层
此文章由 月亮 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 月亮 所有!转贴必须注明作者、出处和本声明,并保持内容完整
delete 所有的还是只delete一条或几条记录?

发表于 2010-11-10 14:57 |显示全部楼层
此文章由 holyplague 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 holyplague 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lz太懒了。
DELETE is a logged operation on a per row basis. This means that the deletion of each row gets logged and physically deleted. You can DELETE any row that will not violate a constraint, while leaving the foreign key or any other contraint in place. TRUNCATE is also a logged operation, but in a different way. TRUNCATE logs the deallocation of the data pages in which the data exists. The deallocation of data pages means that your data rows still actually exist in the data pages, but the extents have been marked as empty for reuse. This is what makes TRUNCATE a faster operation to perform over DELETE. You cannot TRUNCATE a table that has any foreign key constraints. You will have to remove the contraints, TRUNCATE the table, and reapply the contraints.

退役斑竹

发表于 2010-11-10 14:57 |显示全部楼层
此文章由 月亮 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 月亮 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有foreign key constraint的不能用truncate,只能用不带where的delete

2010年度奖章获得者

发表于 2010-11-10 15:01 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 月亮 于 2010-11-10 15:55 发表
delete 所有的还是只delete一条或几条记录?


是 delete 整个table
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2010-11-10 15:05 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 月亮 于 2010-11-10 15:57 发表
有foreign key constraint的不能用truncate,只能用不带where的delete


我已经把其他所有reference table 全部都truncate 好了。

还是不能truncate 这个table。 只能delete。 doesn't make sense to me!

谁有功夫吧所有的contraint 全部drop 掉,再truncate!

SQL 太变态了,  I hate SQL
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

退役斑竹

发表于 2010-11-10 15:08 |显示全部楼层
此文章由 月亮 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 月亮 所有!转贴必须注明作者、出处和本声明,并保持内容完整
SQL一直如此变态。。

2010年度奖章获得者

发表于 2010-11-10 15:13 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我发现只要帖子里有 SQL 的keyword, 就一定能把月亮勾搭进来
:)

发表于 2010-11-10 15:21 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-11-10 16:13 发表
我发现只要帖子里有 SQL 的keyword, 就一定能把月亮勾搭进来
:)


同理,你如果想让她喜欢你,你脑门上也要贴个纸条,写着:SQL

这次注意不要写成“hello world”了

评分

参与人数 2积分 +5 收起 理由
deathrow + 2 你太有才了
dalaohu + 3 你太有才了

查看全部评分

头像被屏蔽

禁止发言

发表于 2010-11-10 16:15 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
头像被屏蔽

禁止发言

发表于 2010-11-10 16:16 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-11-10 16:21 发表


同理,你如果想让她喜欢你,你脑门上也要贴个纸条,写着:SQL

这次注意不要写成“hello world”了


Hello SQL World
签名被屏蔽
Advertisement
Advertisement

退役斑竹 2007 年度奖章获得者 2008年度奖章获得者 特殊贡献奖章 参与宝库编辑功臣

发表于 2010-11-10 16:20 |显示全部楼层
此文章由 黑山老妖 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 黑山老妖 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以临时disable constraint。然后truncate table。完了在enable constraint.

发表于 2010-11-10 16:26 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
I'd just drop it & recreate....because I don't care.

退役斑竹 2007 年度奖章获得者 2008年度奖章获得者 特殊贡献奖章 参与宝库编辑功臣

发表于 2010-11-10 16:34 |显示全部楼层
此文章由 黑山老妖 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 黑山老妖 所有!转贴必须注明作者、出处和本声明,并保持内容完整
I do that too if it's in dev environment...
You will never know how many contraints you will violate if you just drop table...

2010年度奖章获得者

发表于 2010-11-10 17:08 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Is there a SQL command

"Temparily disable all constraint"
And
"Now put all constraint back"?

Otherwise I hv to drop each constraint by their name

特殊贡献奖章

发表于 2010-11-10 18:05 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-11-10 18:08 发表
Is there a SQL command

"Temparily disable all constraint"
And
"Now put all constraint back"?

Otherwise I hv to drop each constraint by their name


sql server里有FOREIGN_KEY_CHECKS 这个值吗?我想应该可以disable所有的constraint的