我有两张桌子,他们通过' 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
....等等,但我们只需要使用这两个字段。
所以我想在Note表中添加带有日期和时间的新笔记。到目前为止,我一直没有成功。这是我写的基本结果:
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&#39 ;;列不允许空值。 INSERT失败。该 声明已被终止。
我无法在Note_key列中添加值,因为它是自动递增的。有什么想法吗?
感谢。
答案 0 :(得分: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'