Comment insérer des N lignes de valeurs par défaut dans un tableau
J'ai une table contenant une colonne d'identité ainsi que d'une colonne représentant la date de création:
CREATE TABLE dbo.OrderStatus
(
OrderStatusId int IDENTITY(1, 1) NOT NULL,
CreationDate datetime NOT NULL default GETDATE(),
CONSTRAINT PK_OrderStatus PRIMARY KEY(OrderStatusId)
)
Depuis la colonne d'identité génère une valeur par elle-même et la CreationDate est toujours la date actuelle (GETDATE()
), je peux ajouter une ligne grâce à DEFAULT VALUES
:
INSERT INTO dbo.OrderStatus DEFAULT VALUES;
Mais que puis-je faire si je veux ajouter, disons, trois dossiers?
Solution actuelle (édité une entrée puisqu'il n'a pas de sens)
Pour l'instant, afin de faire ce que je veux, j'ai ajouter plusieurs lignes avec VALUES
:
INSERT INTO dbo.OrderStatus (CreationDate)
VALUES (GETDATE()),
(GETDATE()),
(GETDATE())
Bien que, je préfère savoir l'équivalent de INSERT INTO .. DEFAULT VALUES
pour plusieurs lignes, dans le cas que j'ai ajouter une autre colonne avec une valeur par défaut plus tard.
Est-il un moyen d'insérer des N lignes dans une table avec DEFAULT VALUES
ou d'une façon similaire?
Quel est le but ici - pourquoi avez-vous besoin de 3 "par défaut" des enregistrements?
En fait, mon esprit buggé. Je ne suis pas arriver à quelque chose. Bien, je suis toujours intéressé à la
INSERT INTO DEFAULT VALUES
équivalent de plusieurs lignes.Je sais que cela semble étrange, mais je veux créer un tableau pour les statuts de commande, puis de créer une table de jonction entre la orderStatus et des tables de langue, qui contient les traductions de chaque état. Donc, je sais déjà que j'ai besoin de 5 enregistrements d'état pour l'instant et puis les admins seront en mesure d'en ajouter d'autres à partir de l'app.
Oui, cela semble un peu étrange, mais il peut rendre votre travail plus facile - ne pourriez-vous pas juste ajouter un dossier relatif à chaque langue, plutôt que "par défaut" des enregistrements?
OriginalL'auteur actaram | 2015-06-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser votre définition d'origine et il suffit d'utiliser une boucle while, par exemple
Voici comment le faire en utilisant une expression de table commune récursive:
Il suffit de noter que, pour les CTE, vous devez spécifier
OPTION(MAXRECURSION ...)
si il est plus grand que 100. Notez également que même si vous êtes à la sélection d'une liste de nombres à partir de la CTE, ils ne sont pas insérées dans la table.OriginalL'auteur Dan Field
Un moyen plus facile est:
cela permettra d'insérer les 500 lignes de valeurs par défaut.
BEGIN .. END
bloc. Est-il possible d'utiliser votre solution dans ce cas ou (dois-je / dois-je) le bâton avec la boucle while?"Aller" est un SSMS commande et ne fait pas partie de SQL ou TSQL.Cela signifie que vous ne pouvez pas l'utiliser dans le cadre d'une procédure ou d'un script.
C'est facile si vous êtes en train de faire dans SSMS ou SqlCmd. Vous ne pouvez pas l'utiliser dans un SP ou de la fonction.
Pourriez-vous préciser dans votre réponse? Il peut être plus clair pour les nouveaux arrivants, puisque ma question n'incluent pas les SSMS tag.
Lorsque vous travaillez dans SQL Server Management Studio dans une fenêtre de requête vous êtes en SSMS mode et le Go est disponible pour vous. Il est virtuelles et interpétées par SSMS. Si vous écrivez une procédure stockée, il est souvent désigné comme un "proc" et lorsque le moteur SQL Server rencontres ALLER, il ne sera probablement jeter une erreur.
OriginalL'auteur benjamin moskovits
Le compte de la Table de méthode peut insérer de grands ensembles de plusieurs lignes, en fournissant le nombre de table est assez grande. Ce tableau de Pointage permettra de gérer jusqu'à 1000 entrées.
OriginalL'auteur Jens Frandsen
Mettre en place un déclencheur lorsqu'une nouvelle ligne est Créée:
https://msdn.microsoft.com/en-us/library/ms189799.aspx
OriginalL'auteur Randall