一個SQL問題

來源:互聯網
上載者:User
我有兩張表:員工(員工id,推薦人id,店號,關聯店號)員工為主鍵,店(店號,地址)店號為主鍵我有兩個問題:1:根據實際情況,推薦人可以沒有,但是如果有的話必須是某一個員工id,我再sqlserver中建立員工表自身的外鍵不行,報錯,ALTER TABLE 語句與 COLUMN FOREIGN KEY SAME TABLE 約束 'FK_員工_員工' 衝突。該衝突發生於資料庫 '員工籌薪計算',表 '員工', column '員工id。難道表自身不能建立外鍵嗎?2:員工中的店號欄位,和關聯店號欄位都是店表的外鍵,引用店表的店號,但是實際操作中我只能建立一個外鍵,第二個就報錯,為什嗎?ALTER TABLE 語句與 COLUMN FOREIGN KEY 約束 'FK_員工_店2' 衝突。該衝突發生於資料庫 '員工籌薪計算',表 '店', column '店號'。謝謝大家!! 
問題補充:
謝謝你的回答,我要補充問題:對於第二個問題:   如:員工表中的一條記錄("00005","00001","B-1","B-2")員工id為"00005",他的推薦人為"00001",他的店號為"B-1",而與他關聯(某種關係)的店號為"B-2",實際情況中確實是這樣呀,他自己的店,和關聯的店必須是店表裡的主鍵,或者為空白,這不正是外鍵的性質嗎?其中店號與關聯店號不存在不一致的問題,因為實際情況中就是不相同的。在說第一個問題,例子還是上面的記錄:("00005","00001","B-1","B-2"),他的推薦人確實必學是員工表中的主鍵的某一項,如果表自身不能建立外鍵的話,請問這個問題我該如何解決?在資料變更時加一個觸發器,去檢查輸入的推薦人是否為員工表的id欄位的某一項?

 

 

你的要求是完全可以實現的,可能在建立時方法或者文法有點小問題,請確認下。

如下是我在SQL Server 2005安照你的要求建立資料表時用到的文法:
---------------------------------------------------------------
/*建立商店*/
CREATE TABLE [dbo].[Store](
[Id] [char](10) NOT NULL,  --編號
[Address] [nvarchar](100) NULL,  --地址
CONSTRAINT [PK_Store] PRIMARY KEY CLUSTERED
(
[Id] ASC  --建立主鍵
)
) ON [PRIMARY]

GO
/*建立員工*/
CREATE TABLE [dbo].[Employee](
[Id] [char](10) NOT NULL, --編號
[RecId] [char](10) NULL,  --推薦人編號
[Store] [char](10) NULL,  --商店編號
[RelStore] [char](10) NULL,--關聯商店編號
CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED
(
[Id] ASC  --建立主鍵
)
) ON [PRIMARY]

GO

/*推薦ID和員工ID建立外鍵約束*/
ALTER TABLE [dbo].[Employee]  WITH CHECK ADD  CONSTRAINT [FK_Employee_Employee] FOREIGN KEY([RecId])
REFERENCES [dbo].[Employee] ([Id])
GO
ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Employee]
GO
/*員工商店ID和商店ID建立外鍵約束*/
ALTER TABLE [dbo].[Employee]  WITH CHECK ADD  CONSTRAINT [FK_Employee_Store] FOREIGN KEY([Store])
REFERENCES [dbo].[Store] ([Id])
GO
ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Store]
GO
/*員工關聯店和商店ID建立外鍵約束*/
ALTER TABLE [dbo].[Employee]  WITH CHECK ADD  CONSTRAINT [FK_Employee_Store1] FOREIGN KEY([RelStore])
REFERENCES [dbo].[Store] ([Id])
GO
ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Store1]
GO

---------------------------------------------------------------
通過這段SQl 指令碼是可以正常建立你所要求的資料表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.