0

我有两个表,它们通过'debt_key'连接这里是表结构

备注表:

Note_Key (numeric(9,0),not null)
Debtor_Key(numeric(9,0),not null)
Debt_Key(numeric(9,0),not null)
User_Key(numeric(5,0),not null)
Note_Date(datetime, not null)
Note_Time(char(8),not null)
Note_Text(Char(80),not null)

负债表:

Debt_key
ACCT

....等等,但我们只需要使用这两个字段。

所以我试图将带有日期和时间的新笔记添加到笔记表中。到目前为止,我一直没有成功。这是我所写内容的基本结果:

INSERT INTO NOTE (b.NOTE_DATE, b.NOTE_TIME, b.NOTE_TEXT)
VALUES('2012-07-11 00:00:00.000','00:00:00','ASSIGNED FOR PI CONTACT')
   SELECT NOTE_DATE, NOTE_TIME, NOTE_TEXT 
   FROM DEBT a JOIN NOTE B ON B.DEBT_KEY = A.DEBT_KEY AND A.DEBT_KEY = '5797071'

当我执行它给我这个错误:

无法将值 NULL 插入到列“NOTE_KEY”、表“Ads_Mast.dbo.NOTE”中;列不允许空值。插入失败。该语句已终止。

我无法向 Note_key 列添加值,因为它是自动递增的。有任何想法吗?

谢谢。

4

1 回答 1

2

如果您正在尝试新笔记,那么如果您要加入第二个表格INSERT,则需要使用。INSERT INTO SELECT FROM您还需要在 Notes 表中包含每个字段的值:

INSERT INTO NOTE 
(
    Note_Key,
    Debtor_Key,
    Debt_Key,
    User_Key,
    NOTE_DATE, 
    NOTE_TIME, 
    NOTE_TEXT
)
SELECT b.Note_Key, a.Debtor_Key, a.Debt_Key, b.NOTE_DATE, a.User_Key, b.NOTE_TIME, b.NOTE_TEXT 
FROM DEBT a JOIN NOTE B 
    ON B.DEBT_KEY = A.DEBT_KEY 
WHERE A.DEBT_KEY = '5797071'

如果您知道要提交的所有值,则需要执行以下操作:

INSERT INTO NOTE 
(
    Debtor_Key,
    Debt_Key,
    User_Key,
    NOTE_DATE, 
    NOTE_TIME, 
    NOTE_TEXT
)
VALUES
(
    0, -- the Debtor_Key value
    1, -- the Debt_Key value
    1, -- the User_Key value
    '2012-07-11 00:00:00.000',
    '00:00:00',
    'ASSIGNED FOR PI CONTACT'
)

编辑:如果您有一些常量值和表中的一些值,请执行以下操作:

INSERT INTO NOTE 
(
    Debtor_Key,
    Debt_Key,
    User_Key,
    NOTE_DATE, 
    NOTE_TIME, 
    NOTE_TEXT
)
SELECT a.Debtor_Key
    , a.Debt_Key
    , '2012-07-11 00:00:00.000'
    , a.User_Key
    , '00:00:00'
    , 'ASSIGNED FOR PI CONTACT'
FROM DEBT a JOIN NOTE B 
    ON B.DEBT_KEY = A.DEBT_KEY 
WHERE A.DEBT_KEY = '5797071'

但是,如果您只想指定UPDATE特定值,则可以使用UPDATE

UPDATE b
SET NOTE_DATE = '2012-07-11 00:00:00.000'
    , NOTE_TIME = '00:00:00'
    , NOTE_TEXT = 'ASSIGNED FOR PI CONTACT'
FROM Note b
JOIN DEBT a
    ON B.DEBT_KEY = A.DEBT_KEY
WHERE  A.DEBT_KEY = '5797071'
于 2012-07-30T19:43:34.780 回答