初平年間,昌豨跟隨呂布,占據徐州,曹操率軍攻打,呂布敗亡,昌豨投降曹操,被任命為東海郡守,這是昌豨第一次投降曹操。
建安五年,劉備派關羽斬車胄,占據徐州,昌豨跟著反叛,投了劉備。
曹操率軍打敗劉備,昌豨再次投降曹操,這是昌豨第一次背叛曹操,第二次投降曹操,後不久,昌豨再一次反叛。
曹操派大將與率兵討伐,包圍東海郡數月,張遼派遣使者說服昌豨,昌豨答應了,並隨張遼拜見曹操,曹操讓昌豨繼續擔任東海郡守。
這是昌豨第二次背叛曹操,第三次投降曹操。
曹操占領冀州後,昌豨又一次反叛,曹操派遣和夏侯淵征討,昌豨戰事不利,投降於禁。
這是昌豨第三次背叛曹操,第四次投降。
根據曆史記載:昌豨反,遣於禁擊之,未拔,複遣淵與禁並力,遂擊豨,降其十餘屯,豨詣禁降。
即於禁征討昌豨,沒打過,後來於禁和夏侯淵合力打敗昌豨,昌豨投降。
但又有記載:昌豨複叛,遣禁征之。禁急進攻豨;豨與禁有舊,詣禁降。也就是說於禁去征討昌豨,昌豨投降。
由於這兩處記載沒有寫明具體的時間,因此有些人認為這是曹操兩次派兵征討昌豨,如此說來,昌豨應該是4次背叛曹操,5次投降曹操了。
也有些人認為這兩段記載的其實是同一件事,隻能算是曹操一次攻打昌豨。
昌豨第四次向於禁投降時,於禁和昌豨是舊識,心中不忍,但最終還是殺了昌豨。
曹操聽說昌豨被於禁殺死,感歎到:“昌豨不降我卻降於禁,這就是命呀。
言下之意是說,昌豨如果向自己投降,自己就不會殺他了,向於禁投降,卻被於禁殺死,這就是命運。
其實於禁在殺死昌豨前曾有下屬勸阻他不要殺,而是把昌豨送到曹操那,但於禁說:“你們不知曹公命令,圍攻後降者不赦免,我是奉令行事,昌豨雖然是舊友,但我又怎麽因此失去原則呢?”