MySQL使用交叉外键删除记录

时间:2017-11-16 11:23:00

标签: php mysql entity

我怀疑。我在MySQL中有两个表InnoDB,这是他们的实体:

class Account
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * one account is created by one user
 *
 * @ORM\ManyToOne(targetEntity="User")
 * @ORM\JoinColumn(name="createdby", referencedColumnName="id", onDelete="CASCADE")
 */
private $createdby;
.
.
. 

class User
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 *  Many Users belong to One Account
 *
 * @ORM\ManyToOne(targetEntity="Account", inversedBy="users")
 * @ORM\JoinColumn(name="account", referencedColumnName="id")
 */
private $account;

所以有两种不同的关系,一种是用户创建的"帐户"另一个是"用户属于一个帐户"。

当我尝试删除帐户(pe.DELETE FROM account WHERE id = 28)时,我也想删除已创建帐户的用户。我并不是说删除属于此帐户的用户,只是删除创建该帐户的用户。但它给了我一个外键约束错误:

致命错误:未捕获PDOException:SQLSTATE [23000]:完整性约束违规:1451无法删除或更新父行:外键约束失败(exampleuser,CONSTRAINT {{1} } FOREIGN KEY(FK_8D93D6497D3656A4)参考accountaccount))...

有任何建议吗?

感谢。

0 个答案:

没有答案