是否可以将表 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 引用以提交表 brukere。
这里有什么问题吗?
编辑2:
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(仍在调查)。所以张贴在这里。希望你不介意
这里有什么问题吗?
最佳答案
这种关系在 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 时,您不必更改表 bar 上的任何内容,因为您引用的是 id 字段而不是名称。
希望对您有所帮助。
关于PHP MYSQL "merging"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038342/