gpt4 book ai didi

MySQL : Select statement inside Check statement

转载 作者:可可西里 更新时间:2023-11-01 07:33:12 28 4
gpt4 key购买 nike

我必须创建一个表,如下所示

借款人(客户编号,贷款编号)

如果客户没有超过 3 笔贷款,则可以贷款。

我创建的表如下

create table borrower(
customerno int(5),
LoanNo int(5),
primary key(customerno,loanno),
check( customerno not in
(select customerno from borrower group by customerno having count(loanno)>=4))
);

但是它给了我一个错误提示

[root@localhost:3306] ERROR 1146: Table 'test.borrower' doesn't exist

谁能告诉我如何解决这个错误?

最佳答案

它给出错误的原因是因为 CHECK 约束引用了正在创建的表,但它在语句被解析时并不存在。

但我有一些坏消息要告诉你......mysql 忽略CHECK 约束。它被允许作为语法只是为了与来自其他数据库的创建语句兼容。

参见 mysql documentation for CREATE TABLE :

The CHECK clause is parsed but ignored by all storage engines.

您必须使用触发器,但请注意,您不能从触发器中抛出异常。您最好的希望是当您检测到问题时,执行类似执行 SELECT * FROM TOO_MANY_LOANS 的操作,并希望调用者弄清楚错误“No such table TOO_MANY_LOANS”的真正含义。

关于MySQL : Select statement inside Check statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13511771/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com