Je insère des données dans SQL Server à l'aide de C #, avec code comme indiqué ici, mais le champ name peut être vide.

string name;
string sqlcommand = "Insert into users values ('"+name+"')"

Je ne peux pas changer le code maintenant, mais je peux changer de base de données. Je veux donc que la colonne name ait une valeur par défaut.

J'ai défini la contrainte par défaut dans la base de données, mais il semble que cela ne fonctionne pas. Parce qu'il est inséré comme unespace ou ''.

Je veux savoir si je saisis une chaîne vide comme indiquée ci-dessus sur SQL Server, qu'est-ce qu'il contient et le modifier sur Insérez-vous comme le code ci-dessous.

(Ce n'est pas un code de travail, il suffit d'un exemple de quel genre de code je veux)

Create Trigger Checking
on Users
after Insert
as 
begin
        if (inserted.Name = '', update Users set Name = 'ello' where Userid = (inserted.userid), "else")

end

Je vous remercie

0
cookie 2 juin 2021 à 22:42

2 réponses

Meilleure réponse

Si vous ne pouvez absolument pas réviser votre code, cela vous aidera, c'est ainsi que vous pouvez écrire votre déclencheur pour remplacer '' avec une valeur par défaut choisie.

Votre exemple de code est syntaxiquement incorrect pour que je recommande de revoir quelques tutoriels sur la façon d'écrire des déclencheurs SQL. Idéalement, bien sûr, vous passeriez les données correctes du code et paramétré!

create trigger TriggerName on dbo.Users
for insert
as
if @@RowCount=0 return
set nocount on

update u set
   u.[name]='default'
 from inserted i join users u on u.Id=i.Id /* assuming Id is the primary key */
 where i.name=''
1
Stu 2 juin 2021 à 20:48

En cas d'insertion (pour de grandes transactions), cela peut affecter les performances de la DB malade jour après jour.

La valeur par défaut sera efficace pour la valeur null uniquement ici.

Vous pouvez utiliser l'instruction de mise à jour dans des activités périodiquement ou après l'insertion.

1
imomins 3 juin 2021 à 00:46