Définir une Limite de Lignes de la Table Dans SQL
Je veux pour définir la limite de mes lignes du tableau. Comment puis-je le faire?
Par exemple 50 lignes dans ma table.
Que voulez-vous faire quand il frappe 51? Leur permettent pas d'insérer ou de supprimer #1?
Exigence inhabituelle. Éventuellement, au lieu de les déclencheurs de vos insérer, puis jeter si rowcount > 50?
Vous désirez peut-être limiter le nombre de lignes renvoyées par une requête spécifique?
Hey Doozer, si thwas le cas? Je suis, après que l'option.
Exigence inhabituelle. Éventuellement, au lieu de les déclencheurs de vos insérer, puis jeter si rowcount > 50?
Vous désirez peut-être limiter le nombre de lignes renvoyées par une requête spécifique?
Hey Doozer, si thwas le cas? Je suis, après que l'option.
OriginalL'auteur ahmadali shafiee | 2011-10-28
Vous devez vous connecter pour publier un commentaire.
Créer un
AFTER INSERT
trigger sur la table. Voici quelque chose qui pourrait être relativement efficace avec vos besoins:INSERT
est, disons, la 3ème modification des données d'une requête dans une chaîne de, disons, 5 requêtes.Cela peut échouer dans l'isolement d'instantané.
Je comprends que, mais compte tenu de l'information que l'OP fourni, c'est la solution que j'ai trouvé. Il y a évidemment quelques "problèmes" avec une certaine configuration, mais sans savoir si ils existent c'est ma meilleure supposition d'une solution.
cela ne fonctionne pas pour l'idée d'avoir le max de 50, de sorte 51ème de ligne serait d'annuler le déplacement de la première valeur, mais pourrait être ajouté
OriginalL'auteur
L'utilisation d'une contrainte de VÉRIFICATION. E. g.:
x
une valeur? Seulement cela permettra de déterminer si votre approche du travail.Je suis à la gestion d'une file d'attente peut-être alors il peut être une IDENTITÉ et un réamorçage lors du nettoyage, ritgh? Merci
OriginalL'auteur nvogel
Faites-vous référence à limiter les résultats d'une requête?
Si oui, avec SQL Server 2008, vous pouvez utiliser
TOP
Si vous êtes à la recherche à la réalité de limiter le nombre d'enregistrements dans la table de base de données, puis une instruction if dans un
TRIGGER
, comme @Requin a posté, serait ma solution.OriginalL'auteur Curt
Ce que vous voulez est d'avoir un
INSTEAD OF INSERT
déclencheur qui vérifie le nombre de lignes en cours. Si déjà 50, vous allez générer une erreur en utilisantRAISERROR
. Si pas, vous venez deinsert
l'enregistrement.Comme ceci:
Aussi il ne gère pas les insertions simultanées. 2 transactions pourrait à la fois faire
SELECT COUNT(*) FROM yourtabletolimit
et de lire que de la valeur et de s'assurer que leur insertion ne pas violation de la limite.Bon point...
Vous êtes également en droit. Merde, apparemment, SQL Server ne dispose pas d'un
BEFORE INSERT
déclencheur. C'est tellement facile à manipuler par Oracle, Firebird, PostgreSQL... bien sûr, ils ne résolvent pas le point soulevé par @MartinSmith. Je vais laisser ma réponse ici, peut-être que quelqu'un peut voir sur le dessus de cela.La honte il y a tellement de restrictions sur les vues indexées ainsi. J'étais en train de penser à un moyen de l'aide de l'un de ceux avec une contrainte unique, mais déjoué à chaque tentative!
OriginalL'auteur Adrian Carneiro