2012-01-18 3 views
2

나는 데이터베이스를 생성하고 난 서로 연결되어 다음 필드를 만들어 :SQL 서버 삽입 오류

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 관계입니다. 그게 네가 원하는거야? BTW, 여기에있는 코드는 오류를주지 않습니다. –

+0

내가 잘못하고있는 것을 알지 못한다는 오류가 발생합니다 ... – opc0de

답변

-2

귀하의 문제는 명세서가 마지막 열에 삽입되지 않았기 때문입니다. 지정한 개수의 열과 개수를 계산하십시오.

개인적으로 들여 쓰기와 표기법을 명시하고 일을 명백하게하는 것이 시간을 절약 할 수있는 좋은 방법이라고 생각합니다. 아래는 내가하는 방법이다.

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

내가 콜론의 수를 실수로 만든다면 열 이름이나 제공된 값의 수가 테이블 정의와 일치하지 않습니다. – opc0de

+0

내 실수. 나는 잘못했다. – xtrem

0

이것은 이상한 것입니다. 복제가 활성화 된 데이터베이스에서이 작업을 실행하고 있습니까?