אנא עזרתכם: שאלה ב-sql

כנראה ADD

New member
אנא עזרתכם: שאלה ב-sql

מריצים את הסקריפט הבא בסקל סרבר
מתקבלת הודעת שגיאה על FK שמשוייך ל-PK המוגדר על שתי שדות.
מה בדיוק הבעיה?
איך ניתן לפתור אותה?

תודה


CREATE TABLE dealer

(

id nvarchar (9) PRIMARY KEY CHECK (id>000000000 AND id<999999999) DEFAULT 000000000,

name nvarchar (15) NOT NULL,

location nvarchar (10) NOT NULL,

seniority int CHECK (seniority>=0),

salary money CHECK (salary>20) DEFAULT 20,

phone nvarchar (11) NOT NULL,

dealaddress nvarchar (15) UNIQUE NOT NULL,

CONSTRAINT UC_dealer UNIQUE (name,phone)

)




CREATE TABLE product

(

procode nvarchar (10) DEFAULT 'XXXXXXXXXX' PRIMARY KEY,

proname nvarchar (10) NOT NULL DEFAULT 'Product',

price money CHECK (price>0),

madeyear int CHECK (madeyear>2010) DEFAULT 2013,

dealerid nvarchar (9) FOREIGN KEY

REFERENCES dealer(id),

--CONSTRAINT PK_product PRIMARY KEY (procode,proname)

)

CREATE TABLE customer

(

creditnum int PRIMARY KEY CHECK (creditnum>0000000000000000000 AND creditnum<9999999999999999999),

cusname nvarchar (15) NOT NULL,

procode nvarchar (10) DEFAULT 'XXXXXXXXXX',

custphone nvarchar (11) UNIQUE NOT NULL,

payment bit,

custaddress nvarchar (15) UNIQUE NOT NULL ,

CONSTRAINT FK_procust FOREIGN KEY (procode)

REFERENCES product(procode)

)
 

גרי רשף

New member
הרצתי על 2008R2 ולא קיבלתי הודעות שגיאה..

..איזו הודעת שגיאה קיבלת?
באיזו טבלה?
 

כנראה ADD

New member
סליחה - זה היה בהערה

CREATE TABLE dealer

(

id nvarchar (9) PRIMARY KEY CHECK (id>000000000 AND id<999999999) DEFAULT 000000000,

name nvarchar (15) NOT NULL,

location nvarchar (10) NOT NULL,

seniority int CHECK (seniority>=0),

salary money CHECK (salary>20) DEFAULT 20,

phone nvarchar (11) NOT NULL,

dealaddress nvarchar (15) UNIQUE NOT NULL,

CONSTRAINT UC_dealer UNIQUE (name,phone)

)




CREATE TABLE product

(

procode nvarchar (10) DEFAULT 'XXXXXXXXXX' ,

proname nvarchar (10) NOT NULL DEFAULT 'Product',

price money CHECK (price>0),

madeyear int CHECK (madeyear>2010) DEFAULT 2013,

dealerid nvarchar (9) FOREIGN KEY

REFERENCES dealer(id),

CONSTRAINT PK_product PRIMARY KEY (procode,proname)

)

CREATE TABLE customer

(

creditnum int PRIMARY KEY CHECK (creditnum>0000000000000000000 AND creditnum<9999999999999999999),

cusname nvarchar (15) NOT NULL,

procode nvarchar (10) DEFAULT 'XXXXXXXXXX',

custphone nvarchar (11) UNIQUE NOT NULL,

payment bit,

custaddress nvarchar (15) UNIQUE NOT NULL ,

CONSTRAINT FK_procust FOREIGN KEY (procode)

REFERENCES product(procode)

)
 

גרי רשף

New member
נסה כך בטבלה השלישית..

CREATE TABLE customer
(
creditnum int PRIMARY KEY CHECK (creditnum>0000000000000000000 AND creditnum<9999999999999999999),
cusname nvarchar (15) NOT NULL,
procode nvarchar (10) DEFAULT 'XXXXXXXXXX',
proname nvarchar (10) NOT NULL DEFAULT 'Product',
custphone nvarchar (11) UNIQUE NOT NULL,
payment bit,
custaddress nvarchar (15) UNIQUE NOT NULL ,
CONSTRAINT FK_procust FOREIGN KEY (procode,Proname)
REFERENCES product(procode,Proname)
)
הוספתי לה עמודה חסרה: מספר העמודות המקושרות כמספר העמודות בטבלה שבצד ה-1 (שתי עמודות במקרה זה).
אם העמודה שהוספתי לטבלה מיותרת - אמור אתה איזו עמודה צריכה להיות מקושרת ל-proname בטבלה השנייה.
 
למעלה