0

日時データ型から外部キーを作成することは可能ですか? これを試してみましたが、エラーメッセージが表示されました: Msg 1776, Level 16, State 0, Line 1 外部キー 'tgllahir' の参照列リストと一致する参照テーブル 'penduduk' に主キーまたは候補キーがありません。メッセージ 1750、レベル 16、状態 0、行 1 制約を作成できませんでした。以前のエラーを参照してください。

私はこのクエリを使用します

親テーブル:

create table penduduk (
no int identity(1,1),
noktp char(11) primary key,
nama varchar(20),
tgl_lahir datetime NOT NULL,
namahari varchar(20),
tgl int,
bulan int,
namabulan varchar(20),
tahun int,
umur int
)

CREATE TABLE tua(
noktp CHAR(11) PRIMARY KEY,
tgl_lahir datetime NOT NULL CONSTRAINT tgllahir FOREIGN KEY REFERENCES penduduk(tgl_lahir),
FOREIGN KEY(noktp) REFERENCES penduduk(noktp),
)
4

3 に答える 3

5

列が適切な候補キーである場合にのみ、列を外部キー制約の参照として使用できます。

Books Online から:

FOREIGN KEY 制約は、別のテーブルの PRIMARY KEY 制約のみにリンクする必要はありません。別のテーブルの UNIQUE 制約の列を参照するように定義することもできます。

外部キー制約を参照してください。

あなたの場合tgl_lahir、一意でもプライマリでもないため、外部キー制約では使用できません。

Unique 制約を追加すると機能するtgl_lahirはずです。それがあなたのデータで機能するかどうかは本当の問題です。

于 2013-05-09T13:00:37.487 に答える
3

penduduk.tgl_lahir列は、主キーとして定義するか、外部キー制約によって参照される一意の制約を使用して定義する必要があります。

SQLフィドル

于 2013-05-09T13:00:49.550 に答える
0

これを試して:

create table penduduk (
no int identity(1,1),
noktp char(11) primary key,
nama varchar(20),
tgl_lahir datetime NOT NULL unique,
namahari varchar(20),
tgl int,
bulan int,
namabulan varchar(20),
tahun int,
umur int
)

CREATE TABLE tua(
noktp CHAR(11) PRIMARY KEY,
tgl_lahir datetime NOT NULL CONSTRAINT tgllahir FOREIGN KEY REFERENCES penduduk(tgl_lahir),
FOREIGN KEY(noktp) REFERENCES penduduk(noktp),
)
于 2013-05-09T13:03:20.890 に答える