2015-12-08 98 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