2012-01-18 24 views
2

私は、データベースを作成したと私はお互いに接続されている次のフィールドを作成:SQL Serverの挿入エラー

CREATE TABLE abonat(COD_ABONAT int PRIMARY KEY ,Nume nvarchar(30),Prenume nvarchar(30),Adresa nvarchar(60),telefon char(13),CNP char(14),COD_ABONAMENT int) 
CREATE TABLE abonament(COD_ABONAMENT int PRIMARY KEY,Denumire nvarchar(30),tip int,TRAFIC_MB int, PRET float, PRET_EXTRA_TRAFIC float) 
CREATE TABLE contractx(NR_CONTRACT int PRIMARY KEY, COD_ABONAT int, VALABILITATE date, DATA_INCHEIERII date) 
CREATE TABLE stare(NR_CONTRACT int, SERIE_MODEM char(10), STARE int) 
CREATE TABLE plata(NR_FACTURA int PRIMARY KEY, DATA_PLATII date) 
CREATE TABLE factura(NR_FACTURA int, COD_ABONAT int PRIMARY KEY, DATA_EMITERII date, DATA_LIMITA date, TOTAL_PLATA float) 
CREATE TABLE tip(TIP_CONTRACT int PRIMARY KEY, DESCRIERE nvarchar(50), SUMA float) 
CREATE TABLE penalizare(NR_FACTURA int PRIMARY KEY, SUMA float) 
CREATE TABLE bonus (FACTURA int PRIMARY KEY, BONUS_TRAFIC int, BONUS_ABONAMENT float) 

ALTER TABLE abonament ADD CONSTRAINT FK_CODY FOREIGN KEY (COD_ABONAMENT) REFERENCES abonat(COD_ABONAT) 
ALTER TABLE contractx ADD CONSTRAINT FF_COD FOREIGN KEY (COD_ABONAT) REFERENCES abonat(COD_ABONAT) 
ALTER TABLE stare ADD CONSTRAINT FF_NEWCOD FOREIGN KEY (NR_CONTRACT) REFERENCES contractx(NR_CONTRACT) 
ALTER TABLE factura ADD CONSTRAINT FF_PLATA FOREIGN KEY (NR_FACTURA) REFERENCES plata(NR_FACTURA) 
ALTER TABLE contractx ADD CONSTRAINT FF_ALTELE FOREIGN KEY (COD_ABONAT) REFERENCES factura(COD_ABONAT) 

INSERT INTO abonat 
VALUES (1,'STROE','ALIN','Str. Deznatui Bloc A 15 sc 2','0741966242','1800929160031',1) 
INSERT INTO abonat 
VALUES (2,'STAMIN','SILVIAN','Str. Raului nr 20','0741563241','1730229160021',2) 
INSERT INTO abonat 
VALUES (3,'JIPA','ALINA','Str.Caracal nr 23','0731226120','2770929160031',3) 
INSERT INTO abonat 
VALUES (4,'ROHOD','RARES','Str.Burebista nr 44','0735411469','1550520160035',4) 
INSERT INTO abonat 
VALUES (5,'AMORARITEI','EUGEN','Str.Privdor Bl B3 sc 2 ap 8','0765511444','18012245160029',5) 


INSERT INTO abonament 
VALUES (1,'BASIC',1,500,9.99,1) 

私の問題は、私は次のエラーを受け取るabonamentに挿入しようとすると:

INSERTステートメントがFOREIGN KEY制約 "FK_CODY"と競合しました。競合は、データベース "ICSx"、テーブル "dbo.abonat"、列 'COD_ABONAT'で発生しました。

どうすればこの問題を解決できますか?このエラーがなくてもテーブルを接続できる方法はありますか?

+1

私はこの正確なコードを実行しており、SQL 2K8を使ってうまく動作します。 – codingbadger

+2

'abonat'と' abonament'の関係を見てください。現在、あなたは1:1の関係になっています。あなたはそれが欲しいのですか?ところで、あなたがここに持っているコードは何の誤りも与えません。 –

+0

私はこのエラーを受け取ります。私は何が間違っているのかわかりません... – opc0de

答えて

-2

あなたの問題は、あなたの明細が最後の列に挿入されなかったことです。列の数と指定した値の数を数えます。

私は個人的には、字下げや表記を明示して明示的に行うことは、時間を節約できる良い方法だと考えています。以下は私がそれを行う方法です。

INSERT INTO MY_TABLE(
    COL1 
    ,COL2 
    ,COL3 
)VALUES(
    1 --COL1 
    ,2 --COL2 
    ,3 --COL3 
); 
+0

もし私がコロンの数を間違えてしまったら、エラーが発生します。列名または指定された値の数がテーブル定義と一致しません。 – opc0de

+0

私の間違い。私は数え切れませんでした。 – xtrem

0

これは奇妙なものです。レプリケーションが有効になっているデータベースでこれを実行していますか?

関連する問題