You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SQL products表添加约束:p_name以Smoked salmon开头时p_id需以SS开头

解决CHECK约束逻辑错误的问题

你之前写的约束逻辑有误,它强制要求所有记录必须同时满足p_id LIKE 'SS%'和p_name LIKE 'Smoked salmon%',但表中存在其他类型的商品记录,自然无法生效。

正确的逻辑应该是:仅当p_name以Smoked salmon开头时,p_id必须以SS开头,其他商品的p_id和p_name不受限制。在SQL中,这种"如果A则B"的逻辑等价于非A 或者 B,对应的约束语句如下:

如果是给已存在的products表添加约束,执行这条语句:

ALTER TABLE products
ADD CONSTRAINT my_constraint CHECK (p_name NOT LIKE 'Smoked salmon%' OR p_id LIKE 'SS%');

如果是新建表时直接定义约束:

CREATE TABLE products (
    p_id VARCHAR(10),
    p_name VARCHAR(50),
    CONSTRAINT my_constraint CHECK (p_name NOT LIKE 'Smoked salmon%' OR p_id LIKE 'SS%')
);

你的现有数据完全符合这条约束的要求:所有以Smoked salmon开头的商品,p_id都是SS开头;其他商品的组合不受约束,因此可以成功添加这条规则。

内容的提问来源于stack exchange,提问作者Sharpe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:05:17