Oi, preciso definir o incremento automático para uma tabela como S1. Tentei alterando a tabela e também criando por nova tabela, estou ciente de como definir auto_increment, mas quando tento definir auto increment como S1, não consigo. já que eu preciso que os valores da chave primária sejam S1,S2,S3 como os seguintes registros. alguém pode sugerir o tipo de dados para isso,
desc test_1;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | varchar(10) | NO | PRI | NULL | |
| name | varchar(100) | NO | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> ALTER TABLE test_1 AUTO_INCREMENT='S1';
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 ''S1'' at line 1
mysql> create table tbl(ID varchar(100) not null primary key auto_increment,name varchar(100)) auto_increment='s1';
ERROR 1063 (42000): Incorrect column specifier for column 'ID'
mysql> create table tbl(ID text not null primary key auto_increment,name varchar(100)) auto_increment='s1';
ERROR 1063 (42000): Incorrect column specifier for column 'ID'
mysql> create table tbl(ID varchar(100) not null primary key auto_increment,name varchar(100)) auto_increment='s';
ERROR 1063 (42000): Incorrect column specifier for column 'ID'
Os valores de incremento automático só podem ser numéricos (tipos inteiros e flutuantes, se bem me lembro).
Se você deseja armazenar S1, ...., S1000, basta armazenar um inteiro e retornar o S extra no select ou no lado do cliente: