这是一种在表foo中合并一个名为“bob”的变量,在我的表foo2中合并我的变量bob2的方法吗?
所以他们总是相互匹配。
因为我正在更新“bob”。我希望如果该值发生变化,它也会对bob2产生影响,反之亦然。
这可能吗?
编辑:
CREATE TABLE IF NOT EXISTS `stats` (
`ID` int(11) NOT NULL auto_increment,
`player` varchar(12) default '',
`rank` varchar(12) default '',
`winpot` int(20) default '0',
`gamesplayed` int(11) default '0',
`tournamentsplayed` int(11) default '0',
`tournamentswon` int(11) default '0',
`handsplayed` int(11) default '0',
`handswon` int(11) default '0',
`bet` int(11) default '0',
`checked` int(11) default '0',
`called` varchar(11) default '0',
`allin` varchar(11) default '0',
`fold_pf` varchar(11) default '0',
`fold_f` varchar(11) default '0',
`fold_t` varchar(11) default '0',
`fold_r` int(11) default '0',
PRIMARY KEY (`ID`)
FOREIGN KEY (winpot) REFERENCES brukere(hand)
);
错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (winpot) REFERENCES brukere(hand) )' at line 20
我试图获得winpot参考表格布鲁克尔。
这里有什么问题?
EDIT2:
create table brukere(
hand int(20) NOT NULL,
id int(20) NOT NULL auto_increment,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS `stats` (
`ID` int(11) NOT NULL auto_increment,
`player` varchar(12) default '',
`rank` varchar(12) default '',
`winpot` int(20),
`gamesplayed` int(11) default 0,
`tournamentsplayed` int(11) default 0,
`tournamentswon` int(11) default 0,
`handsplayed` int(11) default 0,
`handswon` int(11) default 0,
`bet` int(11) default 0,
`checked` int(11) default 0,
`called` varchar(11) default '0',
`allin` varchar(11) default '0',
`fold_pf` varchar(11) default '0',
`fold_f` varchar(11) default '0',
`fold_t` varchar(11) default '0',
`fold_r` int(11) default 0,
PRIMARY KEY (`ID`),
FOREIGN KEY (winpot) REFERENCES brukere(hand)
);
Schema Creation Failed: Can't create table 'db_2_7249b.stats' (errno: 150):
(无法上传trought SQL(仍在调查)。所以在这里发布。希望你不介意
这里有什么问题?
答案 0 :(得分:1)
这种关系在sql中很常见,但是你通常以不必更新第二个表的方式构建它,即你在每个表中使用id来表示它们的值,并在更改时变量值,您不必更新多个表。
例如:
如果你有一个表foo
CREATE TABLE foo (
id integer NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
和表格栏
CREATE TABLE bar (
id INTEGER NOT NULL AUTO_INCREMENT,
foo_id INTEGER NTO NULL,
name CHAR(30) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (foo_id) REFERENCES foo(id)
);
这样,当您在表foo上将bob的名称更改为john时,您不必更改表栏上的任何内容,因为您具有对id字段的引用而不是名称。
希望它有所帮助。