mysql數(shù)據(jù)表:
10余年的湘潭縣網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整湘潭縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“湘潭縣網(wǎng)站設計”,“湘潭縣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
create table driver_order (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
area_start varchar(200),
area_end varchar(200),
order_number varchar(200),
create_user varchar(200),
primary key (id)
);
創(chuàng)建觸發(fā)器:
DELIMITER $$
CREATE TRIGGER seq_driver_order_number BEFORE INSERT ON driver_order
FOR each ROW
BEGIN
DECLARE seq_type INT(10);
SET seq_type = getUserNo(NEW.create_user);
SET NEW.order_number = getNextCommSequence("motor", seq_type);
END$$
DELIMITER ;
以下是mybatis操作觸發(fā)器的配置方法:
insert id="insertOrder" parameterType="DriverOrder"
selectKey keyProperty="id,orderNumber" keyColumn="ID,ORDER_NUMBER" order="AFTER" resultType="java.util.Map"
SELECT ID,ORDER_NUMBER FROM DRIVER_ORDER where ID = last_insert_id()
/selectKey
INSERT INTO
DRIVER_ORDER(ID,ORDER_NUMBER,AREA_START,AREA_END,CREATE_USER,CREATE_TIME)
VALUES
(#{id},
#{orderNumber,jdbcType=VARCHAR},
#{areaStart,jdbcType=VARCHAR},
#{areaEnd,jdbcType=VARCHAR},
#{createUser,jdbcType=VARCHAR},
now())
/insert
如果公司里有上百個表要做觸發(fā)器,如果手動寫代碼的話。很累,一個小程序,自動生成mysql的觸發(fā)代碼。
?php
$dbname = 'test';//數(shù)據(jù)庫
$tab1 = 'user'; //執(zhí)行的表
$tab2 = 'user_bak'; //被觸發(fā)的表
$conn = mysql_connect("localhost","root", "root",$dbname) or
die("請檢查你的主機名數(shù)據(jù)庫用戶名和密碼");
mysql_select_db($dbname, $conn) or die("數(shù)據(jù)庫還沒有連接");
$query = mysql_query("SHOW COLUMNS FROM $tab1");mysql_query("");
while($row=mysql_fetch_array($query,MYSQL_NUM)){//得到表的字段數(shù)組
$temp[] = $row[0];
$str1 .= '`'.$row[0].'`,';
$str2 .= 'new.'.$row[0].',';
$str3 .= $row[0].'=new.'.$row[0].',';
}
//insert觸發(fā)器
$inser_str = "h1{$tab1}表的insert觸發(fā)器/h1";
$inser_str .= "create trigger ".$tab1."_insert brAFTER INSERT
bron ".$tab1."br";
$inser_str .="for each rowbr INSERT INTO {$tab2}
(".rtrim($str1,',').') VALUES ('.rtrim($str2,',').');';
//update觸發(fā)器
$update_str = "h1{$tab1}表的update觸發(fā)器/h1";
$update_str .= "create trigger ".$tab1."_updatebr";
$update_str .= "after updatebr";
$update_str .= "on ".$tab1.'br';
$update_str .= "for each rowbr";
$update_str .= "update ".$tab2." set ".rtrim($str3,',')." where id =
new.id;//這里的where id = new.id要手動改一下。改成主鍵的字段名";
//delete觸發(fā)器
$delete_str = "h1{$tab1}表的delete觸發(fā)器/h1";
$delete_str .= "create trigger ".$tab1."_deletebr";
$delete_str .= "after deletebr";
$delete_str .= "on ".$tab1."br";
$delete_str .= "for each row br";
$delete_str .= "delete from ".$tab2." where id=OLD.id//這里的where id =
new.id要手動改一下。改成主鍵的字段名br";
echo $inser_str;
echo $update_str;
echo $delete_str;
echo
'p注意:br1.觸發(fā)器可用于InnoDB或MyISAM類型的表br2.插入的時候用AFTER INSERT
更好的保證數(shù)據(jù)ID的對應,如果用before
INSERT有可能造成ID不對應br3.如new.id則是表示主表中的字段br4.sql語句太多,用
begin..endbr5.使用show triggers語句查看數(shù)據(jù)庫中的觸發(fā)器。br6.刪除觸發(fā)器DROP TRIGGER
IF EXISTS `test`br7.作者:a
href=""華夏之星/a';
echo EOT
h3語法:/h3
create trigger 觸發(fā)器名稱br
{ before | after}br
{insert | update | delete}br
on 表名br
for each rowbr
觸發(fā)器SQL語句br
參數(shù)詳解如下:br
create trigger 觸發(fā)器名稱:創(chuàng)建一個新觸發(fā)器,并指定觸發(fā)器的名稱。br
{ before | after}:用于指定在insert、update或delete語句執(zhí)行前觸發(fā)還是在語句執(zhí)行后觸發(fā)。br
on 表名:用于指定響應該觸發(fā)器的表名。br
for each row:觸發(fā)器的執(zhí)行間隔,for each row
通知觸發(fā)器每隔一行執(zhí)行一次動作,而不是對整個表執(zhí)行一次。br
觸發(fā)器SQL語句:觸發(fā)器要執(zhí)行的SQL語句,如果該觸發(fā)器要執(zhí)行多條SQL語句,要將多條語句放在begin…end塊中。
br如:begin…end塊(它不能上phpadmin上運行。因為phpmyadmin沒有對begin...end解析。)br
mysql_query("br
create trigger user_deletebr
after deletebr
on userbr
for each row BEGINbr
delete from user_bak where id=OLD.id;br
delete from aaa where id=OLD.id;br
END;");br
brbrbrbr
EOT;
?
--觸發(fā)器如果存在則刪除重新創(chuàng)建
DROP?TRIGGER?IF?EXISTS?觸發(fā)器名稱;
CREATE?TRIGGER?觸發(fā)器名稱?
AFTER?INSERT?ON?表名稱
FOR?EACH?ROW
BEGIN
--這里寫你觸發(fā)器觸發(fā)時要做的
UPDATE?lsxhd?
SET?ywrq=UNIX_TIMESTAMP(FROM_UNIXTIME(rq,?"%Y-%m-%d"))
WHERE
ywrq=UNIX_TIMESTAMP('1970-01-01')--如果這里的‘1970-01-01’是插入的數(shù)據(jù)中的列值的話,可以從INSERTED中查詢出
END;
主要的就是數(shù)據(jù)的截取吧,在家判斷就可以了
CREATE TRIGGER trigger1
AFTER insert ON AAA
FOR EACH ROW
BEGIN
insert INTO BBB
(a, b, c, d)
values substr
('this\is\a\test', 1, instr('this\is\a\test', '\', 1, 1) - 1),
substr
('this\is\a\test',
instr('this\is\a\test', '\', -1, 3) + 1,
instr('this\is\a\test', '\', -1, 2) -
(instr('this\is\a\test', '\', -1, 3) + 1)),
(substr('this\is\a\test',
instr('this\is\a\test', '\', -1, 2) + 1,
instr('this\is\a\test', '\', -1, 1) -
(instr('this\is\a\test', '\', -1, 2) + 1)),
substr(NEW :aa, instr(NEW :aa, '\', -1, 1) + 1, length(NEW :aa)));
END;
delimiter //
create trigger upd_a
after insert on table_b
for each row
begin
if
new.收費單號 like 'Y%'
then
update table_a set table_a.編號 =1 where table_a.操作員id = new.收費員id and table_a.編號 1 ;
end if;
end//
delimiter ;