我的存储过程有5个以上的create tables语句。有没有一种方法可以选择由这些create tables语句在全局变量中设置的缺省排序规则,而不需要通过单独的create table语句。
-- SAMPLE BLOCK A --
DROP TABLE IF EXISTS abc;
SET @createTable = CONCAT("CREATE TABLE "abc"(
record_id VARCHAR(255),
member VARCHAR(255),
name VARCHAR(255)
)CHARACTER SET 'utf8'
COLLATE 'utf8_unicode_ci'");
PREPARE create_table_statement FROM @createTable;
EXECUTE create_table_statement;
DEALLOCATE PREPARE create_table_statement;
-- SAMPLE BLOCK B--
DROP TABLE IF EXISTS def;
SET @createTable1 = CONCAT("CREATE TABLE "def"(
address VARCHAR(255),
member_gender VARCHAR(255),
member_age VARCHAR(255)
)CHARACTER SET 'utf8'
COLLATE 'utf8_unicode_ci'");
PREPARE create_table_statement1 FROM @createTable1;
EXECUTE create_table_statement1;
DEALLOCATE PREPARE create_table_statement1;
.
. 发布于 2017-08-22 17:43:57
CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;您可以在创建表时使用上述语句。
发布于 2017-08-22 21:11:09
有两个选项:
1:使用可以更改以影响所有创建表的局部变量
-- SAMPLE BLOCK A --
set @character_set = 'utf8';
set @default_collation = 'utf8_unicode_ci';
DROP TABLE IF EXISTS abc;
-- use that variables to build the SQL:
SET @createTable = CONCAT("CREATE TABLE "abc"(
record_id VARCHAR(255),
member VARCHAR(255),
name VARCHAR(255)
)CHARACTER SET '",@character_set,"'
COLLATE '",@default_collation,"'");
-- same for next 2:设置数据库默认字符集和排序规则,当您设置该缺省值时:所有未使用特定字符集或排序规则创建的新表都将使用该字符集和排序规则作为默认值。
CREATE DATABASE `your_database`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;https://stackoverflow.com/questions/45813895
复制相似问题