2015-12-08 143 views
2

我试图通过使用下表的文字游戏节省15由15个字母板为在MySQL 5.6数据库中的225个字符的字符串:指定的225位默认为VARCHAR列

create table games (
     gid integer primary key auto_increment, 
     player1 integer references users(uid) on delete cascade, 
     player2 integer references users(uid) on delete cascade, 
     stamp1 integer not null default 0, 
     stamp2 integer not null default 0, 
     letters1 varchar(7) not null, 
     letters2 varchar(7) not null, 
     letters varchar(116) not null, 
     board varchar(225) not null default space(225) 
); 

不幸的是,这将返回一个错误:

ERROR 1064 (42000): 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 'space(225))'

我只是想用15×15的空间来初始化游戏板 - 并希望修改董事会每次移动后。

你能推荐一个更好的方法吗?

+3

可以使用char(255)来代替,它会创建一个固定大小的列。请参阅http://dev.mysql.com/doc/refman/5.6/en/char.html – DBug

+0

您是否建议'board char(225)not null default'''? –

+1

是的。无法确定默认设置,但在检索时插入和剥离空格(可以让空格离开空间,请参见上面的链接),mysql将填充空格值最大为255的值 – DBug

回答

1

不能使用的功能作为默认值:

Can I use a function for a default value in MySql?

所以你可以定义默认值的字符串:

board varchar(225) not null default ".................up to 225...." 

,或者您可以使用触发器。

+0

我看到了谢谢......我只是在我的'database_creation.sql'中写出这么长的字符串感到不自在(因为很难找到一个缺失的空格)。我希望我可以说'''×225'就像在Perl –

+1

@AlexanderFarber我同意,像SPACE(225)这样的函数非常清晰,而一系列空格不是......但我认为没有其他解决方案只是一个触发器。 – fthiella