Yii Framework Forum: [SQL] insert insolite - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[SQL] insert insolite Rate Topic: -----

#1 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 25 March 2011 - 11:25 AM

Questo post non riguarda Yii. Però vorrei sottoporvi un problema che ogni tanto mi capita. Mi capita, lavorando su vecchi database, di avere il campo chiave "id" e di non avere la possibilità di usare la proprietà auto_increment.

Normalmente faccio una query che recupera il max di un id del tipo
select max(id) from SourceMessage
a quel punto posso fare una insert del tipo
insert into Message values (???,'en','Contacts');
.

Questa operazione si può fare in un passaggio unico:
insert into Message values ((select max(id) from SourceMessage),'en','Contacts')



Spero vi possa essere utile qualora dobbiate mettere mano al database direttamente come nel mio caso.
0

#2 User is offline   Maurizio Domba Cerin 

  • Yii - Yesss It Is !!!
  • Yii
  • Group: Yii Dev Team
  • Posts: 4,359
  • Joined: 12-October 09
  • Location:Croatia

Posted 26 March 2011 - 03:34 AM

non dovrebbe esserci max(id) + 1 ?
Find more about me.... btw. Do you know your WAN IP?
0

#3 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 28 March 2011 - 01:41 AM

Ottima idea, facendo tutto in una sola query evita eventuali conflitti tra 2 richieste contemporanee.
0

#4 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 29 March 2011 - 05:32 AM

View Postmdomba, on 26 March 2011 - 03:34 AM, said:

non dovrebbe esserci max(id) + 1 ?


Di fatto SourceMessage ha un id univoco mentre SourceMessage ha una superchiave che è composta dall'id di SourceMessage più la lingua. Ecco perchè non ho inserito il + 1.

Se volessi, quindi, inserire un incrementale in una tabella che non ha un campo increment, dovrei usare il max(id) +1 esattamente come hai indicato tu.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users