2017-08-03 11 views
0

私は以前このソリューションを実装していました。 https://stackoverflow.com/a/12657012/112680 昨日まではうまくいっていました。私はいくつかの列を追加していましたが、インデックス(これは私がw/o問題以前にやっていたもの)を信じていましたが、現在は1,2,3のような修正をしていません。eventidごとに増えています。 私はそれが動作しているものとの比較を行い、私は自動インクリメント開始値以外の違いは見ません。 MySQL履歴テーブル。紛失したリビジョンのシーケンス

私の後に挿入トリガーメインテーブルの上に

thisTrigger: BEGIN 
IF ((@TRIGGER_CHECKS = FALSE) 
    OR (@TRIGGER_AFTER_INSERT_CHECKS = FALSE)) 
    AND (USER() = xxx) 
THEN 
    LEAVE thisTrigger; 
END IF; 

INSERT INTO eventshistory 
    SELECT 'initial booking', NULL, UTC_TIMESTAMP(), e.* 
    FROM events AS e 
    WHERE e.eventid = NEW.eventid; 
END 

...だから更新トリガー

thisTrigger: BEGIN 
IF ((@TRIGGER_CHECKS = FALSE) 
    OR (@TRIGGER_AFTER_UPDATE_CHECKS = FALSE)) 
    AND (USER() = xxxx) 
THEN 
    LEAVE thisTrigger; 
END IF; 

INSERT INTO eventshistory SELECT 'update', NULL, UTC_TIMESTAMP(), e.* 
    FROM events AS e WHERE e.eventid = NEW.eventid; 
END 

DDL

CREATE TABLE eventshistory (
    action VARCHAR(15) NOT NULL DEFAULT 'insert' 
,revision INT(6) NOT NULL AUTO_INCREMENT 
,actiondate DATETIME DEFAULT NULL 
,eventid INT(11) NOT NULL 
,franchiseid INT(11) NOT NULL 
,territoryid INT(11) DEFAULT NULL 
,customerinfoid INT(11) DEFAULT NULL 
,eventaddressid INT(11) DEFAULT NULL 
,eventstartdate DATETIME DEFAULT NULL 
,eventenddate DATETIME DEFAULT NULL 
,createdon DATETIME DEFAULT NULL 
,createdby INT(11) DEFAULT NULL 
,updatedon DATETIME DEFAULT NULL 
,updatedby INT(11) DEFAULT NULL 
,attendeecount SMALLINT(6) DEFAULT NULL 
,onhold TINYINT(1) NOT NULL DEFAULT 0 
,holduntildate DATETIME DEFAULT NULL 
,canceledon DATETIME DEFAULT NULL 
,canceledby INT(11) DEFAULT NULL 
,isquotesent TINYINT(1) NOT NULL DEFAULT 0 
,quoteexpireson DATETIME DEFAULT NULL 
,haspriceoverride TINYINT(1) NOT NULL DEFAULT 0 
,pretaxtotal DECIMAL(8,2) DEFAULT NULL 
,couponcodeid INT(11) DEFAULT NULL 
,eventnotes VARCHAR(500) DEFAULT NULL 
,discounttype CHAR(1) DEFAULT NULL COMMENT 'P for percentage, F for fixed dollar' 
,discountamount DECIMAL(8,2) DEFAULT NULL 
,istaxexempt TINYINT(1) NOT NULL DEFAULT 0 
,videogameratingid INT(11) DEFAULT NULL 
,quotedon DATETIME DEFAULT NULL 
,tax DECIMAL(8,2) DEFAULT NULL 
,receiptnotes VARCHAR(500) DEFAULT NULL 
,outstandingbalance DECIMAL(8,2) DEFAULT NULL 
,flatparkingsetup TINYINT(1) DEFAULT NULL 
,honoreename VARCHAR(50) DEFAULT NULL 
,HonoreeAge VARCHAR(10) DEFAULT NULL 
,honoreegender CHAR(1) DEFAULT NULL 
,referralsourceid INT(11) DEFAULT NULL 
,eventtypeid INT(11) DEFAULT NULL 
,pricingmodel CHAR(11) DEFAULT NULL COMMENT 'Hourly 1, Hourly 2 etc.' 
,depositamt DECIMAL(8,2) DEFAULT NULL 
,isquoteconverted TINYINT(1) DEFAULT NULL 
,status VARCHAR(25) DEFAULT NULL 
,activitiestotal DECIMAL(8,2) DEFAULT NULL 
,coupontotal DECIMAL(8,2) DEFAULT NULL 
,overridediff DECIMAL(8,2) DEFAULT NULL 
,refunddue DECIMAL(8,2) DEFAULT NULL 
,bookeddate DATETIME DEFAULT NULL 
,cancelationfee DECIMAL(8,2) DEFAULT NULL 
,eventtotal DECIMAL(8,2) DEFAULT NULL 
,discounttotal DECIMAL(8,2) DEFAULT NULL 
,g2uwareeid INT(11) DEFAULT NULL 
,islocked TINYINT(1) DEFAULT NULL 
,lockeddate DATETIME DEFAULT NULL 
,isQuotePaid TINYINT(1) DEFAULT NULL 
,taxrate DECIMAL(6,5) DEFAULT 0.00000 
,quotepaidpct TINYINT(4) UNSIGNED DEFAULT NULL 
,cancelationfeecash DECIMAL(8,2) DEFAULT NULL 
,canceltype CHAR(1) DEFAULT NULL 
,isguaranteed TINYINT(1) DEFAULT 0 
,commission DECIMAL(6,2) DEFAULT 0.00 
,commissionreportedbooked TINYINT(1) NOT NULL DEFAULT 0 
,commissionreportedcompleted TINYINT(1) NOT NULL DEFAULT 0 
,CommissionableCost DECIMAL(8,2) NOT NULL DEFAULT 0.00 
,CouponType CHAR(1) DEFAULT NULL 
,CouponCode VARCHAR(25) DEFAULT NULL 
,CouponAmount DECIMAL(6,2) DEFAULT NULL 
,PRIMARY KEY (eventid,revision) 
,INDEX IDX_eventshistory_franchiseid (franchiseid) 
,INDEX UK_eventshistory (status) 
,INDEX UK_eventshistory2 (canceledon) 
,INDEX UK_eventshistory3 (revision,eventid,franchiseid) 
) 
ENGINE = MYISAM 
AUTO_INCREMENT = 235 
AVG_ROW_LENGTH = 251 
CHARACTER SET utf8 
COLLATE utf8_unicode_ci; 

答えて

0

、RTM後https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

AUTO_INCREMENTカラムが複数のインデックスの一部である場合、MySQLは、AUTO_INCREMENTカラムで始まるインデックス(存在する場合)を使用してシーケンス値を生成します。たとえば、動物表にPRIMARY KEY(grp、id)およびINDEX(id)というインデックスが含まれている場合、MySQLはシーケンス値を生成するためにPRIMARY KEYを無視します。結果として、テーブルには1つのシーケンスが含まれ、grpの値のシーケンスは含まれません

私はPKを含む新しいインデックスを追加しました。あなたは既に使用されているものと同じ、またはそれ以下の値にカウンターをリセットすることはできませんMyISAM

ことのために auto incrementリセットのためにも

は、MySQLは述べています。値が現在AUTO_INCREMENTカラムの最大値以下である場合のMyISAMの場合は、値が現在の最大プラス

1しかし、私は1000年にそれをリセットしたとき、それは実際にそれを戻すにリセットされますそれは良いニュースです。

関連する問題