quand je fais cette demande, j'ai une erreurProbleme avec incrément identifiant
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI
)
VALUES (
'SELECT MAX(D_NIDMTR) FROM FR_METIERPUBLI + 1', 1000
je veux augmenter mon id
quand je fais cette demande, j'ai une erreurProbleme avec incrément identifiant
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI
)
VALUES (
'SELECT MAX(D_NIDMTR) FROM FR_METIERPUBLI + 1', 1000
je veux augmenter mon id
essayer
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI)
SELECT MAX(D_NIDMTR) +1, 1000 FROM FR_METIERPUBLI
Cependant .. être très prudent avec ce ..si 2 opérations font cela en même temps, vous obtiendrez un double
vous pouvez faire (sur SQL Server au moins) envelopper dans une transaction et spécifier ces verrous
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI)
SELECT MAX(D_NIDMTR) +1, 1000 FROM FR_METIERPUBLI with (UPDLOCK, HOLDLOCK)
Pourquoi n'utilisez-vous pas une séquence ou une identité?
@Mercer, faites particulièrement attention à cette partie: Pourquoi n'utilisez-vous pas une séquence ou une identité? – HLGEM
@HLGEM comment l'utiliser? – Mercer
Dépend de la base de données que vous utilisez. Ce sont des choses spécifiques à la base de données, mais la plupart des bases de données ont un moyen d'incrémenter automatiquement un champ d'id de quelque sorte. – HLGEM
sans connaître la base de données, cela est juste une supposition, mais essayez ceci:
INSERT INTO FR_METIERPUBLI
(D_NIDMTR,D_NIDPUBLI)
SELECT
MAX(D_NIDMTR)+ 1, 1000
FROM FR_METIERPUBLI
pour SQL Server, essayez de protection contre aucune ligne existantes en utilisant ceci:
INSERT INTO FR_METIERPUBLI
(D_NIDMTR,D_NIDPUBLI)
SELECT
ISNULL(MAX(D_NIDMTR),0)+ 1, 1000
FROM FR_METIERPUBLI
content que vous avez posté. J'étais sur le point de faire un idiot de moi-même. –
Supprimez les guillemets simples. Et dites-nous la base de données SQL que vous utilisez - MySQL? Serveur SQL? Postgres? Oracle? – Oded
Vous ne devez jamais affecter une clé primaire comme celle-ci, en particulier si plusieurs clients peuvent accéder à la base de données à la fois, car cela peut entraîner la duplication d'ID. La plupart des systèmes DB fournissent des séquences ou des champs auto-incrémentés que vous devriez utiliser. – RoToRa