LINUX.ORG.RU

MyQSL


0

0

Подскажите, как при создании временной таблицы указать ключевое поле.
Вот так, например, не работает:
$sth = $this->{dbh} -> prepare("
	CREATE TEMPORARY TABLE 
		tmp$i
		primary key (subject_id)
		TYPE = HEAP
	SELECT 
		subject_id 
	FROM 
		subject 
	WHERE 
		 subject_id LIKE '$$find_by[$i][1]%'");
$sth ->execute();
print ( $DBI::errstr);

А вот так, работает но нет ключевого поля(индекса)
$sth = $this->{dbh} -> prepare("
	CREATE TEMPORARY TABLE 
		tmp$i
		TYPE = HEAP
	SELECT 
		subject_id 
	FROM 
		subject 
	WHERE 
		 subject_id LIKE '$$find_by[$i][1]%'");
$sth ->execute();
print ( $DBI::errstr);

Можно сделать ALTER после создания таблицы, но хочется узнать - можно ли сделать сразу.

Re: MyQSL

Что у тебя в tmp$i скрывается? Структура и имя таблицы? Вот туда и нужно запихивать первичный ключ, а не после нее.

Chumka ★★★ ()
Ответ на: Re: MyQSL от Chumka

Re: MyQSL

tmp$i - имя таблицы, т.е. получаться таблицы с именеми tmp0,tmp1...

stalcker ()
Ответ на: Re: MyQSL от stalcker

Re: MyQSL

Если tmp$i - это только имя, то это неверно.
В запросе должна быть структура таблицы. Где она?
Т.е так где-то надо:
CREATE TEMPORARY TABLE tmp$i(subject INT,PRIMARY KEY(subject)) TYPE=HEAP;

Chumka ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.