免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SQLServer中表的刪除重建語句

表的刪除重建問題,稍微測(cè)試了一下。具體內(nèi)容如下:

1.常規(guī)表的重建

if exists(select * from sys.objects where name='tmp' and type='U')
    drop table tmp
else
    create table tmp
    (
    id int,
    name varchar(20)
    )

type='U'通常是用來防止,起名時(shí)和系統(tǒng)的對(duì)象同名。如果可以保證沒有,可以不帶。

 

2.臨時(shí)表的重建

臨時(shí)表和普通表是不同的,它們存放在tempdb中,所以在sys.objects中是查不到的。

所以下面的例子不能得到正確的結(jié)果,因?yàn)閐rop語句不會(huì)運(yùn)行,exists的條件不會(huì)為true。

IF  EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='#temp')
  DROP TABLE #temp
GO
SELECT *
INTO #temp
FROM [dbo].[Table_1]
GO

 

正確的寫法如下:

 if (object_id('tempdb..#tmp') is not null)
    drop table #tmp
else
 create table #tmp(id int,name varchar(20))

 

看到網(wǎng)上有下面的寫法,這種寫法在語法檢查的時(shí)候是對(duì)的。但是實(shí)際是存在錯(cuò)誤的。

if exists (select object_id('Tempdb..#temp') )

DROP TABLE #temp

go

上面的語句在#temp已經(jīng)創(chuàng)建的情況下是可以正確運(yùn)行的,但是當(dāng)#temp不存在或者已經(jīng)被drop掉了,則會(huì)報(bào)錯(cuò)。

因?yàn)閑xists的定義是Returns TRUE if a subquery contains any rows,并且Using NULL in a subquery to still return a result set(參考:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/exists-transact-sql)

即object_id('Tempdb..#temp')為null,也會(huì)執(zhí)行drop。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
解決delphi TAdoQuery組件的close方法導(dǎo)致”列名無效“錯(cuò)誤的問題
36.為什么臨時(shí)表可以重名undefined
Sybase - tempdb
Shell腳本中執(zhí)行sql語句操作mysql的5種方法
truncate與delete的區(qū)別
mysql刪除索引
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服