在MySQL的同一个表中创建2个AUTO _INCREMENT列

时间:2018-05-03 11:41:27

标签: mysql sql database

我有一张这样的表:

W/IPA-Native-W: data received from IPA is NULL! is it ok?
D/IpaCoreSdkAdapter: ipaMessageEventType= START_RECO
E/android.media.AudioRecord: User permission denied!
D/IpaAndroidAudioManagerFacade: startRecording AudioRecord
D/IPA-Native-I: [IPAStateKeyword::onEntry] publish PLAY_BEEP
W/IPA-Native-W: data received from IPA is NULL! is it ok?
D/IpaCoreSdkAdapter: ipaMessageEventType= PLAY_BEEP
D/IpaAndroidAudioManagerFacade: VOLUME play start + originalVolume=12
D/IpaAndroidAudioManagerFacade: VOLUME play start + streamVolume=7
I/AudioTrack: Skip ramp
D/IpaAndroidAudioManagerFacade: VOLUME play end + originalVolume=12
D/IpaAndroidAudioManagerFacade: VOLUME play end + streamVolume=12
D/IntentGenerator: sendK2KnobIntent patype->5 state-> 1
D/IntentGenerator: Complete sendK2KnobIntent patype->5 state-> 1
D/IPA-Native-I: [IPAStateKeyword::onEntry] Generating internal event...

我希望CREATE TABLE Car ( CarID INT NOT NULL AUTO_INCREMENT , CarBrand VARCHAR(20) NOT NULL , InsuranceNumber INT NOT NULL , PRIMARY KEY (CarID))AUTO_INCREMENT=1; 自动增加,就像InsuranceNumber一样 我知道同时不能有2个自动增加的列,但我做了一些研究,发现我可以通过创建一个 CarID。我确实尝试了自己,但我无法做到我想做的事。

我确实尝试过这样的事情:

trigger

但是我收到语法错误。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您询问的问题是触发器代码中的语法错误。

解决方案是使用特殊关键字NEW而不是表名。

CREATE TRIGGER car_trigger AFTER INSERT ON Car
FOR EACH ROW UPDATE Car SET NEW.CarID = NEW.InsuranceNumber 

但是如果您尝试将一个自动增量列复制到另一个,那么您应该知道这不会起作用,因为您无法更改NEW.*列的值一个AFTER触发器。该行已被插入,更改值的时间已经太晚了。

但是在BEFORE触发器中,尚未生成自动增量值,并且自动增量列仍为NULL。

制作等同于"两个自动增量列的唯一方法"是生成不使用AUTO_INCREMENT但使用其他机制的自动值,因此您可以在执行SQL语句时为该行提供值。