2009-05-29 11 views

Répondre

1

Cela dépend du SGBD que vous utilisez. Pour MySQL, vous pouvez utiliser:

ALTER TABLE x ADD COLUMN y INTEGER NOT NULL DEFAULT -1 AUTO_INCREMENT 

Voir http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

+0

Pas familier avec MySQL + AUTO_INCREMENT - comment contrôle-t-il quels enregistrements obtiennent quelles valeurs? – n8wrl

+0

Les lignes recevront des valeurs incrémentées pour y dans l'ordre de leur insertion. http://dev.mysql.com/doc/refman/5.0/en/alter-table.html – rodion

0

sont des valeurs auto-incrémentée de nouvelles lignes après votre conversion aussi? Sinon, vous pouvez faire 3 étapes:

  1. altèrer la table avec la colonne NULLABLE
  2. UPDATE la nouvelle colonne avec tout ce que vous avez des règles
  3. à nouveau ALTER NOT NULL à définir.
3

Cela dépend de votre SGBD. MySQL utilise AUTO_INCREMENT:

ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER 
    NOT NULL DEFAULT -1 AUTO_INCREMENT 

PostgreSQL utilise CREATE SEQUENCE:

CREATE SEQUENCE favorites_seq; 
ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER 
    NOT NULL DEFAULT -1 nextval('favorites_seq') 

SQL Server utilise IDENTITY:

ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER 
    IDENTITY(1,1) NOT NULL DEFAULT -1 

Comme une note de côté, je ne sais pas pourquoi vous définissez votre d erreur par défaut -1. Pourquoi voudriez-vous faire signer vos nombres entiers s'ils seront toujours positifs? Vous devriez faire le 0 par défaut pour l'efficacité.

Questions connexes