fonctions mysql, transactions, vues, déclencheurs

1. Fonction

CREATE FUNCTION f_name(paramters) returns dataType; return value; 

les paramètres ne peuvent être que dans. Le type de nom de paramètre de paramètre d'entrée
doit avoir une valeur de retour. Les retours de
début et de fin ne peuvent pas être ajoutés. Le
type de valeur de retour n'est pas ajouté ici. Le type de valeur de
retour est la valeur à renvoyer.
Exemple: ajouter deux nombres

create function addfuntion(a int,b int) 
returns int return a + b; 
#执行函数 
select addfuntion(1,1); 

Remarque: La
fonction ne peut renvoyer qu'une seule valeur. La
fonction n'implique généralement pas l'ajout, la suppression, la modification et la vérification de données. Il s'agit d'une fonction générale. L'
appel d'une fonction personnalisée est cohérent avec le système appelant. Aucun appel n'est requis. Utilisez select pour obtenir la valeur de retour
. Vous ne pouvez pas utiliser d'instructions SQL
dans la fonction. Identique à l'instruction SQL qui ne peut pas être reconnue en java,
telle que count (), sum (), avg (), max (), min ()

2. Affaires

Une transaction est un groupe d'unités indivisibles qui réussissent ou échouent en même temps.
L'intégrité des données avant et après la transaction doit être cohérente. Lorsque
plusieurs utilisateurs accèdent aux données simultanément, la transaction d'un utilisateur ne peut pas être perturbée par les transactions d'autres utilisateurs. Les données entre plusieurs transactions simultanées doivent être isolées les unes des autres.
Une fois qu'une chose est soumise, les modifications apportées aux données sont permanentes, et même si la base de données échoue, elle ne devrait pas avoir d'impact sur elle.

Dans MySQL, seules les bases de données ou les tables qui utilisent le moteur de base de données Innodb prennent en charge les transactions.
Utilisez BEGIN, ROLLBACK, COMMIT pour obtenir
BEGIN démarrer une transaction
ROLLBACK transaction rollback
COMMIT confirmation de transaction

Exemple en python:

import pymysql

try:
conn = pymysql.connect(host="ip",user="user",password="password",db="test1")
print("连接服务器成功!")

cursor = conn.cursor()
sql = "update student set name = \"jack2\" where s_id = 2 ;"
sql2 = "update student set name = rose21 where s_id = 3;" # money打错了将导致执行失败
try:
cursor.execute(sql)
cursor.execute(sql2)
conn.commit()
print("执行成功 提交")
except:
print("发送错误 回滚..")
conn.rollback()

except Exception as e:
print("连接服务器失败.....")
print(type(e),e)
finally:
if cursor:cursor.close()
if conn:conn.close()

Trois vues

Les vues peuvent être utilisées pour contrôler les autorisations de données ou pour simplifier les requêtes de connexion. Les ajouts, suppressions et modifications de la vue seront synchronisés avec la table d'origine, mais comme la vue fait généralement partie du champ, elle échouera généralement. La
vue est une table virtuelle, donc l'utilisation est la même que celle ordinaire. La table ne fait aucune différence

Créez des vues pour contrôler les autorisations des champs de données ou simplifier les instructions de requête pour plusieurs tables

CREATE VIEW car_location (车架号,layer,地区) as 
SELECT 
vehicle_purchase_invoice.frame_num,vehicle_purchase_invoice.layer,sys_location.name
from vehicle_purchase_invoice,sys_location
WHERE vehicle_purchase_invoice.layer = sys_location.layer;
#查看视图 
SELECT * from car_location WHERE 车架号 ='20B0062R9Y2548197';
#删除视图
DROP VIEW car_location;

Quatrièmement, le déclencheur

1. Préparez les données

CREATE TABLE cmd (
id INT PRIMARY KEY auto_increment,
USER CHAR (32),
priv CHAR (10),
cmd CHAR (64),
sub_time datetime, #提交时间
success enum ('yes', 'no') #0代表执行失败
);

2. Tableau du journal des erreurs

CREATE TABLE errlog (
id INT PRIMARY KEY auto_increment,
err_cmd CHAR (64),
err_time datetime
);

3. Créez un déclencheur

delimiter //
create trigger trigger1 after insert on cmd for each row
FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次。
begin
if new.success = "no" then
insert into errlog values(null,new.cmd,new.sub_time);
end if;
end//
delimiter ;

DROP trigger trigger1;

4. Insérez un enregistrement dans la table cmd, déclenchez le déclencheur et décidez s'il faut insérer le journal des erreurs selon les conditions du IF

INSERT INTO cmd (
USER,
priv,
cmd,
sub_time,
success
)
VALUES
('egon','0755','ls -l /etc',NOW(),'yes'),
('egon','0755','cat /etc/passwd',NOW(),'no'),
('egon','0755','useradd xxx',NOW(),'no'),
('egon','0755','ps aux',NOW(),'yes');

5. Vérifiez si les enregistrements de la table du journal des erreurs sont automatiquement insérés

select *from errlog;

Je suppose que tu aimes

Origine blog.csdn.net/Krystal_RonghuiLi/article/details/108000089
conseillé
Classement