Копирование строки с составным ключом

pilot911

Новичок
Копирование строки с составным ключом

Привет всем!

Возник вопрос по копированию строки в туже таблицу с одновременным увеличением второй части составного ключа на +1.

Есть таблица с полями

PHP:
CREATE TABLE IF NOT EXISTS  `page` (
  `id`				int(10) 	unsigned 	NOT NULL AUTO_INCREMENT,
  `workspace_id` 	int(4) 		unsigned 	NOT NULL 	default '0',  
  `title` 		char(250) 				NOT NULL 	default '',

  PRIMARY KEY  (`id`,`workspace_id`)
}

Необходимо скопировать строку с (id=1 AND workspace_id=0) так, чтобы в новой строке workspace_id увеличилось на +1


Почему-то вот так не получается

PHP:
INSERT INTO page
(SELECT * FROM page WHERE id=1 AND workspace_id=0) 
JOIN (SELECT max(workspace_id) AS workspace_id FROM page  where id=1  AND workspace_id=0 ) AS t2

Как правильно выглядит решение для составного ключа ?
 

Gas

может по одной?
[sql]
insert into page select id,workspace_id+1,title from page where id=1 and workspace_id=0;
[/sql]
 

pilot911

Новичок
так отлично работает, а можно не указывать всех полей ?

то есть использовать "*" ?

это очень важно при условии добавления новых полей в таблицу без модификации запроса

-~{}~ 17.11.08 17:58:

нашел ответ

запрос правильный

[sql]
insert into page select * from page where id=1 and workspace_id=0
[/sql]


необходимо изменить объявление таблицы - автоинкрементным сделать поле workspace_id, a не id


[sql]
CREATE TABLE IF NOT EXISTS `page` (
`id` int(10) unsigned NOT NULL ,
`workspace_id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`title` char(250) NOT NULL default '',

PRIMARY KEY (`id`,`workspace_id`)
}
[/sql]
 
Сверху