解决了!在下面的单独帖子中回答
“无法添加外键约束”
仅在表Consist_of
中使用代码时才会发生这种情况:
INDEX trade_name (trade_name),
FOREIGN KEY (trade_name)
REFERENCES Drug(trade_name)
ON DELETE CASCADE,
PRIMARY KEY (pre_no, dssn, pname, trade_name)
如果我从trade_name
取出PRIMARY KEY ()
并删除INDEX
到CASCADE,
代码,那么我的内容就会成功编译。我所要做的就是拥有它,以便我可以使用相同的名称输入Drug
,并将唯一键设为pname
和trade_name
的组合
所有代码:
CREATE TABLE Doctor (
dssn INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
dname VARCHAR(30),
specialty VARCHAR(30)
);
CREATE TABLE Prescription (
pre_no INT(6) UNSIGNED PRIMARY KEY,
dssn INT(6) UNSIGNED,
INDEX dssn (dssn),
FOREIGN KEY (dssn)
REFERENCES Doctor(dssn)
ON DELETE CASCADE,
pdate DATETIME
);
CREATE Table Ph_company (
pname varchar(30) PRIMARY KEY,
phone varchar(12)
);
CREATE Table Drug (
pname varchar(30),
trade_name VARCHAR(30),
formula VARCHAR(30),
INDEX pname (pname),
FOREIGN KEY (pname)
REFERENCES Ph_company(pname)
ON DELETE CASCADE,
key(pname, trade_name)
);
CREATE Table Consist_of (
pre_no INT(6) UNSIGNED,
dssn INT(6) UNSIGNED,
pname varchar(30),
trade_name VARCHAR(30),
INDEX pre_no (pre_no),
FOREIGN KEY (pre_no)
REFERENCES Prescription(pre_no)
ON DELETE CASCADE,
INDEX dssn (dssn),
FOREIGN KEY (dssn)
REFERENCES Prescription(dssn)
ON DELETE CASCADE,
INDEX pname (pname),
FOREIGN KEY (pname)
REFERENCES Drug(pname)
ON DELETE CASCADE,
INDEX trade_name (trade_name),
FOREIGN KEY (trade_name)
REFERENCES Drug(trade_name)
ON DELETE CASCADE,
PRIMARY KEY (pre_no, dssn, pname, trade_name)
);
答案 0 :(得分:0)
由于DRUG中的主键是由2个字段组成的复合键,因此必须以相同的方式设置外键。因此,不是声明2个外键(1表示pname而另一个表示trade_name),而是执行此操作:
FOREIGN KEY ('pname','trade_name')
REFERENCES Drug('pname','trade_name')
答案 1 :(得分:0)
数据显示,经过2个小时的敲击后,我在问你们这里2分钟后找出解决方案(我想)。
我添加了
int guessedLetters = 0;
int guessLeft = 5;
while (guessLeft < 0 || guessedLetters == fileWord.length())
{
char guessInput;
cout << "\nEnter a letter to guess: ";
cin >> guessInput;
guessInput = toupper(guessInput);
cout << "You guessed the letter: " << guessInput<< endl;
for (int i = 0; i < fileWord.length(); i++)
{
if (fileWord[i] == guessInput)
{
cout << wrongGuess << " is in the letter to guess." << endl;
guessedLetters++;
found = true;
}
}
// if not found - increment wrong guesses
if (!found)
{
guessLeft--;
cout << guessInput << " is not in the word to guess." << endl;
}
//print the board that corresponds to the wrongGuess
}
到INDEX trade_name (trade_name),
key(pname, trade_name)
创建代码的末尾,它现在有效,允许我输入重复的药物名称。