Salut, je voudrais concevoir une requête où une colonne n'est pas modifiable, mais le reste d'entre eux oui.Afficher avec une colonne en lecture seule
Comment est-ce que je peux faire ceci?
Cordialement
Salut, je voudrais concevoir une requête où une colonne n'est pas modifiable, mais le reste d'entre eux oui.Afficher avec une colonne en lecture seule
Comment est-ce que je peux faire ceci?
Cordialement
Eh bien, je pense que vous devez utiliser un déclencheur INSTEAD OF sur la vue de telle sorte que la table de base est mis à jour directement pas.
Voici un article qui les explique. Article
Un autre exemple. Exemple de code ci-dessous. Article2
échantillon (bien sûr, vous devez modifier ceci pour adapter votre point de vue.)
CREATE TRIGGER tr_Employees_U on Employees FOR UPDATE AS
IF UPDATE(lastname)
BEGIN
RAISERROR ('cannot change lastname', 16, 1)
ROLLBACK TRAN
RETURN
END
GO
Utilisez le déclencheur soit:
1) erreur de ils essaient de mettre à jour cette colonne
2) il suffit de ne pas mettre à jour cette colonne
Ensuite, vous devriez être ensemble.
Je sais que c'est une question ancienne, mais je l'ai parcouru en cherchant dans les archives et j'ai (je pense) une meilleure solution. Les affiches originales ne s'en soucient probablement pas à ce stade, mais cela peut aider quelqu'un d'autre à faire des recherches sur le même problème.
Si vous définissez le champ dans votre vue que vous souhaitez rendre en lecture seule à la suite de certaines opérations, il ne peut pas être mis à jour automatiquement, ce qui est beaucoup moins fastidieux que la création et le maintien d'un déclencheur. Dans mon cas, j'avais une jointure à une table auxiliaire, où je voulais montrer le champ joint, mais je ne laissais personne le changer, car cela changerait pour tous les enregistrements joints, pas seulement pour ceux en cours d'édition. Le champ était un texte simple, nommé Pristup. Tout ce que je faisais était de définir le champ dans la vue comme:
LTrim (přístup) přístup
Cela permet de maintenir le même nom, mais le contenu ne peut pas être changé, indépendamment des autorisations. Simple et efficace.
Parfait, je vais l'utiliser. Merci –