Mojolicious数据库操作(二)
一、mysql插入insert
mojo::mysql中的db对象的query方法是一个很重要的、且很常用的方法。我们任何一种sql语句操作都可以放于此内。
# Insert 插入数据 my $db = $mysql->db; #db对象可以单独赋值给一个变量,以简写调用 $db->query('insert into names (name) values (?)', 'Sara'); #都是普通的插入语句,很好理解 $db->query('insert into names (name) values (?)', 'Stefan');
二、mysql事务
所谓的事务,就是批量执行一些SQL语句,如果其中一条出错,那么同批执行的所有语句都不会在数据库中执行、生效。从而保证我们数据的安全性。
同样,我们可以用来批量执行数据插入操作:
# Insert more rows in a transaction eval { my $tx = $db->begin; #此语句开启一个事务 $db->query('insert into names (name) values (?)', 'Baerbel'); $db->query('insert into names (name) values (?)', 'Wolfgang'); $tx->commit; #上述语句均为sql操作,此处语句为结束一个事务向数据库提交本批次SQL语句 }; say $@ if $@; #eval...if $@是perl的异常处理,类似其他语言的try catch。$@中包含了错误信息。
三、返回id
insert插入数据,我们有时会希望返回新插入数据的id。mysql不具备returning id语法,但是mysql可以通过SQL语句SELECTLAST_INSERT_ID()获取一个最后插入数据的ID。
同样,mojo封装了此语法:
# Insert another row and return the generated id say $db->query('insert into names (name) values (?)', 'Daniel')->last_insert_id;