2

employee最後に、計算列である列を含むテーブルを作成しましたempid。この列は主キーでもあります。

これは自己参照テーブルであり、列manageridはそれ自体を参照します。

しかし、さらに列を追加した後にテーブルを保存すると、エラーが発生します

「登録」テーブル
インデックス「PK_Registration」を作成できません。
テーブル 'Registration' の null 許容列に PRIMARY KEY 制約を定義できません。
制約を作成できませんでした。以前のエラーを参照してください。

しかし、私のテーブルは完璧に機能しています....

変更を加えるたびにコーディングするのではなく、テーブルでグラフィカルに作業したい

このエラーの原因でグラフィカルにそれを行うことはできません。100 個のテーブルがあります。コーディングしたくありません。非常にイライラします。

SQL Server 2008 Management Studio でグラフィカルに実行したいのですが、可能ですか?

これは私のテーブルです

CREATE TABLE [dbo].[Registration](
    [empid]  AS ('Sale_'+CONVERT([varchar](50),[id],(0))) PERSISTED NOT NULL,
    [id] [int] IDENTITY(900000,1) NOT NULL,
    [First_Name] [varchar](40) NULL,
    [Last_Name] [varchar](40) NULL,
    [Address] [varchar](40) NULL,
    [E_Mail] [varchar](40) NULL,
    [Country] [varchar](40) NULL,
    [Mobile_No] [varchar](40) NULL,
    [Designation] [varchar](40) NULL,
    [managerID] [varchar](55) NULL,
 CONSTRAINT [PK_Registration] PRIMARY KEY CLUSTERED 
(
    [empid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Registration]  WITH CHECK ADD  CONSTRAINT [FK_Registration_Registration] FOREIGN KEY([managerID])
REFERENCES [dbo].[Registration] ([empid])
GO

ALTER TABLE [dbo].[Registration] CHECK CONSTRAINT [FK_Registration_Registration]
GO
4

1 に答える 1

1

empid を主キーとして使用することはできません。
id を主キーとして使用します。
とにかく、テーブルの主キーとして「[int] IDENTITY」を使用することが、主キーを行う最も一般的な方法です。主キーとクラスター化インデックスがストレージを制御します。
empid を主キーとして使用しても、何のメリットもありません。
empid を計算列にするだけです。クエリの場合、SQL サーバーはそれが計算列であり、主キーのみを使用することを認識します。SQL サーバーは、そのクエリで主キーのみを使用します。

于 2013-03-21T15:58:04.350 に答える