我有兩個表,名爲'ticket'和'ticket_category'。 'Ticket'表具有'Ticket_Uid'列,其類型爲'UniqueIdentifier'。 'ticket'中的每個'ticket_uid'表在'ticket_category'表中具有一對多映射。 例如在表中插入逗號分隔值時出錯:SQL Server 2008
'票' 表:
Ticket_Uid
100
Ticket_Category:
Ticket_Uid Ticket_Category_Uid
100 ABC
100 DEF
100 XYZ
我想創建一個名爲'comment_mining'下表:
Ticket_Uid Category_List
100 ABC,DEF,XYZ
表已經使用以下方法創建:
create table dbo.comment_mining
(
Ticket_UID [uniqueidentifier] NOT NULL,
time_created datetime,
time_closed datetime,
total_time_taken int,
category_list nvarchar(500),
comment_list varchar(8000)
);
我已經創造了這個表,並填充「Ticket_Uid」列。
對於插入「category_list」專欄中,我使用下面的查詢:
insert into dbo.comment_mining(category_list)
SELECT
(SELECT distinct convert(varchar(500),category_id) + ',' AS [text()]
FROM ticket_category pr
WHERE pr.ticket_uid = p.ticket_uid
FOR XML PATH (''))
AS Category_list
FROM comment_mining p
當我運行上面的查詢,它給了我下面的錯誤:
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'Ticket_UID', table 'Support_Saas.dbo.comment_mining'; column does not allow nulls. INSERT fails.
The statement has been terminated.
(其是奇怪的,因爲我甚至沒有插入'Ticket_Uid'列)
當我運行相同的查詢沒有插入語句,它完美執行。查詢如下:
SELECT
(SELECT distinct convert(varchar(500),category_id) + ',' AS [text()]
FROM ticket_category pr
WHERE pr.ticket_uid = p.ticket_uid
FOR XML PATH (''))
AS Category_list
FROM comment_mining p
是有當上述查詢運行一些NULL值,但「comment_mining」表可以接受NULL值「category_list」列。爲什麼'ticket_Uid'列中的錯誤?
請問有人能解釋爲什麼會發生這種情況,這有什麼治療?
P.S. - 我是SQL新手。
感謝您的回覆。我只是想出了它。你是絕對正確的。當我從ticket_uid中刪除約束時,我能夠正確插入。 – Patthebug