2010-09-21 66 views
3

這是否有效dbo.dbo,如果是這是什麼意思?我已經spoted這對查詢別人寫道:dbo.dbo是否有效?

from dbo.tmp_BDCode aob inner join dbo.dbo.tmp_BDCode_03 ao

難道有不良影響的查詢,因爲dbo只是表示一個全局對象。

感謝所有澄清此。

+0

在舊版本的SQL服務器(例如2000),它更糟糕http://stackoverflow.com/questions/2974893/why-does-sql-server-2000-treat-select-test-and-select-t -est-the-same – 2010-09-21 14:20:32

回答

2

可能有一個名爲dbo的數據庫或名爲dbo.dbo的模式或名爲dbo.tablename的表。

這些命令都是有效的:

create database dbo 
use dbo 
create schema [dbo.dbo] 
create table [dbo.dbo].[dbo.tablename] (id int, name varchar(10)) 

select * from [dbo.dbo].[dbo.tablename] as dt 
select * from dbo.[dbo.dbo].[dbo.tablename] as dt 

它肯定有沒有說清楚,足以將有事後閱讀源代碼的程序員有不利影響。

+1

即使它們是有效的,這是一個相當差的命名約定...... – JNK 2010-09-21 13:47:30

+4

有效:是的。 Sane:不會。任何在我的服務器上像這樣拉扯特技的人會用溼麪條沾40次鞭打。 – 2010-09-21 13:49:17

+0

除非他自己拿出括號,否則唯一可以運行的方式是,如果有一個名爲dbo的數據庫,對不對? – 2010-09-21 13:50:57