初平年间,昌豨跟随吕布,占据徐州,曹操率军攻打,吕布败亡,昌豨投降曹操,被任命为东海郡守,这是昌豨第一次投降曹操。
建安五年,刘备派关羽斩车胄,占据徐州,昌豨跟着反叛,投了刘备。
曹操率军打败刘备,昌豨再次投降曹操,这是昌豨第一次背叛曹操,第二次投降曹操,后不久,昌豨再一次反叛。
曹操派大将与率兵讨伐,包围东海郡数月,张辽派遣使者说服昌豨,昌豨答应了,并随张辽拜见曹操,曹操让昌豨继续担任东海郡守。
这是昌豨第二次背叛曹操,第三次投降曹操。
曹操占领冀州后,昌豨又一次反叛,曹操派遣和夏侯渊征讨,昌豨战事不利,投降于禁。
这是昌豨第三次背叛曹操,第四次投降。
根据历史记载:昌豨反,遣于禁击之,未拔,复遣渊与禁并力,遂击豨,降其十余屯,豨诣禁降。
即于禁征讨昌豨,没打过,后来于禁和夏侯渊合力打败昌豨,昌豨投降。
但又有记载:昌豨复叛,遣禁征之。禁急进攻豨豨与禁有旧,诣禁降。也就是说于禁去征讨昌豨,昌豨投降。
由于这两处记载没有写明具体的时间,因此有些人认为这是曹操两次派兵征讨昌豨,如此说来,昌豨应该是4次背叛曹操,5次投降曹操了。
也有些人认为这两段记载的其实是同一件事,只能算是曹操一次攻打昌豨。
昌豨第四次向于禁投降时,于禁和昌豨是旧识,心中不忍,但最终还是杀了昌豨。
曹操听说昌豨被于禁杀死,感叹到:“昌豨不降我却降于禁,这就是命呀。
言下之意是说,昌豨如果向自己投降,自己就不会杀他了,向于禁投降,却被于禁杀死,这就是命运。
其实于禁在杀死昌豨前曾有下属劝阻他不要杀,而是把昌豨送到曹操那,但于禁说:“你们不知曹公命令,围攻后降者不赦免,我是奉令行事,昌豨虽然是旧友,但我又怎么因此失去原则呢?”
由此可见,让于禁杀死昌豨的正是曹操,而曹操却又当众说他不会杀死昌豨,不过是想借此安排下属,以体现他的胸襟而已,曹操真是演了出好戏。
从昌豨过往的经历来看,昌豨和曹操帐下很多人都非常熟,包括臧霸、于禁、张辽、夏侯渊等,张辽和昌豨曾同在吕布手下,关系好也是有可能的。