2012-01-28 12 views
0

OK回答は検索されていますが、見つからない場合は質問を入力しないでください。私は2つのテーブルを持って、私のテーブルの両方が自動生成されたPKを持っています。表2のPKは表1のFKです。両方とも自動生成されているため、表1のFKが表2から自動生成された値を取り込むと想定していましたが、機能していません。表1のFKはヌルであることを示しています。ここでは表1を作成するための私のSQLコードは次のとおりです。外部キーに主キー値が設定されていません

CREATE TABLE Employee_tbl (
EmployeeID int PRIMARY KEY IDENTITY, 
LastName varchar(20) not null, 
FirstName varchar(20) not null, 
[Address] varchar(60)not null, 
City varchar(20) not null, 
[State] varchar(20) not null, 
TelephoneAreaCode varchar(3) not null, 
TelephoneNumber varchar(7) not null, 
HireDate date, 
Salary varchar(20) not null, 
Gender char(1) not null, 
Age varchar(3) not null, 
JobID int FOREIGN KEY REFERENCES JobTitle_tbl(JobID), 
) 

、ここでは表2:

create table JobTitle_tbl(
JobID int PRIMARY KEY IDENTITY, 
EEO1Classification varchar(50) not null, 
Job_title varchar(50) not null, 
Job_description varchar(MAX) not null, 
Exempt_nonexempt_status varchar(20) not null, 
) 

私はまた、いくつかのINSERT文を持っている:

INSERT INTO Employee_tbl (LastName, FirstName, [Address], City, [State], TelephoneAreaCode, 
TelephoneNumber, HireDate, Salary, Gender, Age) 
Values 
('Smith', 'John', '1234 Number Lane', 'Los Angeles', 'California', '555', 
'8675309', '10/07/2003', '20,000.00', 'M', '50'), 
... 

と:

INSERT into JobTitle_tbl (EEO1Classification, Job_title, Job_description, Exempt_nonexempt_status) 
VALUES 
('Office/Clerical', 'Accounting Clerk', 'Computes classifies records and verifies numerical data for use in maintaining 
accounting records. Essential Duties 
1. Compiles and sorts documents, such as invoices and checks, 
substantiating business transactions. 
2. Verifies and posts details of business transactions, such as funds received 
and disbursed, and totals accounts to ledgers or computer spreadsheets 
and databases. 
3. Audits invoices against purchase orders, researches discrepancies, and 
approves for payment. 
4. Computes and records charges, refunds, cost of lost or damaged goods, 
freight charges, rentals and similar items. 
5. Prepares vouchers, invoices, checks, account statements, reports and 
other records and reviews for accuracy. 
6. Reconciles general ledger accounts with various registers. 
7. Reconciles bank statements. 
8. Monitors accounts payable and receivable to ensure that payments are up 
to date. 
9. Assists employees, vendors, clients, or customers by answering questions 
related to accounts, procedures, and services. 
Required Qualifications and Experience 
The accounting clerk must have excellent math and accounting skills, in addition 
to the ability to use Quick Books software for maintaining records.', 'Non-Exempt'), 

なぜFKの値がnullになっているのですか?私はテーブル1をクエリですか?

+1

あなたの質問で言葉遣いを減らすことはできますか?また、FKは自動生成されません。明示的にそれを子テーブルに挿入する必要があります –

答えて

1

外部キーは、使用する外部キーがわからないため、自動設定されません。 (SQL Serverのを使用している場合や@@ IDを使用して)あなたはJobTitle_tblテーブルに行を挿入するか必要があるし、主キーを含めるようにINSERT文を更新するだろう

select id from JobTitle_tbl where Job_title = '' 

別のオプションをバックアウトのIDを選択しますただし、IDの挿入を最初に許可する必要があります。

SET IDENTITY_INSERT JobTitle_tbl ON 
into the JobTitle_tbl (id, title) values (1, 'Manager') 
SET IDENTITY_INSERT JobTitle_tbl OFF 

いずれの場合も、最初の挿入文を自分のIDで更新する必要があります。

insert into Employee_tbl (LastName, FirstName, JobID) values ('Smith', 'John', 1) 
+0

私はフォローしていません、私にいくつかのコードを表示できますか? –

+0

私はこの権利を理解していますか? fkを自動入力する方法はありませんか? –

+0

@JohnStewart:いいえ、FKは自動的には満たされません - その行は、その行がどの親の行に属しているかを "どのように"知っていますか?これはプログラマが知っているように**あなた**です.FKに適切な値を入力して親行へのリンクを確立するのはあなた次第です。 –

関連する問題