0

次のT-SQLステートメントが与えられた場合、(検査によって)主キーをどのように決定しますか?それがリストされていない場合(私が思うように)、それはどのように見えるでしょうか?

CREATE TABLE [dbo].[BLDGINFO](
    [LBLDGRUNNO] [int] NULL,
    [LBLDGNO] [int] NOT NULL,
    [FBIVOLUME] [float] NULL,
    [FBIACOND] [float] NULL,
    [NBIHTYPE] [float] NULL,
    [NBILTYPE] [float] NULL,
    [NBISTORIES] [float] NULL,
    [NBIFTYPE] [float] NULL,
    [NBIBEDS] [float] NULL,
    [NBIUNITS] [float] NULL,
    [SBIRATENO] [nvarchar](31) NULL,
    [NBICTYPE] [float] NULL,
    [NBIYEARBLT] [int] NULL DEFAULT ((0)),
    [NBITHBNDRY] [int] NULL
) ON [PRIMARY]
4

3 に答える 3

2

主キーとして機能する可能性のあるテーブル内の唯一のフィールドはLBLDGNO、主キー列をnull許容できないためです。

于 2012-04-24T06:43:50.983 に答える
1

質問のテーブル定義に主キーが含まれていません。主キーがid列として定義されている例を次に示します。

CREATE TABLE [dbo].[BLDGINFO](
    id int NOT NULL,
    [LBLDGRUNNO] [int] NULL,
    [LBLDGNO] [int] NOT NULL,
    [FBIVOLUME] [float] NULL,
    [FBIACOND] [float] NULL,
    [NBIHTYPE] [float] NULL,
    [NBILTYPE] [float] NULL,
    [NBISTORIES] [float] NULL,
    [NBIFTYPE] [float] NULL,
    [NBIBEDS] [float] NULL,
    [NBIUNITS] [float] NULL,
    [SBIRATENO] [nvarchar](31) NULL,
    [NBICTYPE] [float] NULL,
    [NBIYEARBLT] [int] NULL DEFAULT ((0)),
    [NBITHBNDRY] [int] NULL,
    PRIMARY KEY (id)
) ON [PRIMARY]
于 2012-04-24T05:54:34.263 に答える
1

主キーが定義されている場合は、になりますLBLDGNO。ただし、主キーがまったく定義されていない可能性は十分にあります。これは次のように判断できます。

SELECT c.name
FROM sys.indexes i, sys.index_columns ic, sys.objects o, sys.columns c
WHERE o.object_id = i.object_id
AND ic.index_id = i.index_id AND ic.object_id = i.object_id
AND c.object_id = o.object_id AND c.column_id = ic.column_id
AND i.is_primary_key = 1
AND o.name = 'BLDGINFO'

このクエリは、主キーに含まれるすべての列を返します。空の結果セットが返される場合、主キーは定義されていません。

于 2012-04-24T10:25:07.307 に答える