尝试插入表

时间:2016-11-03 16:34:43

标签: sql-server-2008 tsql

我们正在为ERP系统建立合作网站。他们有一个笔记表,我试图通过在T-SQL中编写脚本来移动到我们的笔记表中,因为有数百条记录。我正在使用SQL Server 2008R2。我不断得到一个与CHECK约束冲突的INSERT语句" ObjectNotesCk4"。冲突发生在数据库" PLT_NAMALT_App",table" dbo.ObjectNotes"错误。

一些细节。我们的ObjectNotes表需要来自PO的RowPointer,来自SpecificNotes表的PK,然后是我用常量填充的一些其他字段。首先,我使用游标从PO表中捕获RowPointer,然后插入与PO#匹配的SpecificNotes表,并尝试使用OUTPUT INTO临时表捕获PK。然后我尝试使用我在OUTPUT中插入的变量插入到ObjectNotes表中。所以我的查询......(只是一个FYI我将其限制为一个PO#,一行#用于验证)。

DECLARE @SpecificToken TABLE (SpecificTokenID TokenType, NoteContent OleObjectType, NoteDesc LongDescType)

DECLARE @RowPointer RowPointerType

DECLARE MY_CURSOR CURSOR 
  LOCAL STATIC FOR 

SELECT  RowPointer FROM poitem

OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @RowPointer 

WHILE @@FETCH_STATUS = 0
BEGIN 
INSERT INTO SpecificNotes  (NoteContent, NoteDesc)
        OUTPUT inserted.SpecificNoteToken, inserted.NoteContent, inserted.NoteDesc
        INTO @SpecificToken
    SELECT LongNote, 'Visual Note'
    FROM purc_line_notes vb 
    JOIN  poline slp
    ON vb.PONUM = slp.po_num
    and vb.LINE_NO = po_line
    WHERE slp.po_num = 'P000060883'
    and slp.po_line = '1'
    AND slp.rowpointer = @RowPointer

    INSERT INTO ObjectNotes (RefRowPointer,NoteHeaderToken,SpecificNoteToken,NoteType)
    VALUES (@OuterID, 5, (SELECT SpecificTokenID FROM @SpecificToken),0)

    FETCH NEXT FROM MY_CURSOR INTO @RowPointer 
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR

同样在测试@SpecificToken中的值时,SpecificNoteToken为0但应为185(检查SpecificNotes表中的值)

在SpecificNotes中,SpecificNoteToken是主键,这就是我首先插入该表的原因。 在ObjectNotes中,ObjectNoteToken是主键,但SpecificNoteToken是外键。 RefRowPointer是poline表(slp)的外键。

这是我第一次使用OUTPUT INTO,我不确定这是正确的方法,因为我正在阅读有关能够使用主键的混合内容。我也为罗嗦道歉,我想确保彻底描述我的情况。

0 个答案:

没有答案