0

2 つのテーブルがあり、それらは「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

....などですが、これら 2 つのフィールドのみを使用する必要があります。

そのため、日付と時刻を含む新しいメモをメモ テーブルに追加しようとしています。これまでのところ、私は成功していません。これが私が書いたものの基本的な結果です:

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' に挿入できません。列はヌルを許可しません。INSERT は失敗します。ステートメントは終了されました。

自動インクリメントであるため、 Note_key 列に値を追加できません。何か案は?

ありがとう。

4

1 に答える 1

2

INSERT新しいメモを作成しようとしているINSERT INTO SELECT FROM場合、2 番目のテーブルと結合している場合は を使用する必要があります。また、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 に答える