CREATE TABLE [dbo].[tb_SC]( [SNO] [varchar](12) NOT NULL,--学号 [course_id] [varchar](50) NOT NULL,--课程,例:数据库原理与应用实验191 [Grade] [varchar](50) NULL,--成绩 CONSTRAINT [PK_tb_SC] PRIMARY KEY CLUSTERED([SNO],[course_id]),--主键 -- 外键约束,表约束 FOREIGN KEY(SNO) REFERENCES [dbo].[tb_User](user_name), -- 外键约束,表约束 FOREIGN KEY(course_id) REFERENCES [dbo].[tb_Course](course_id) )怎样修改为2019SQLserver可行版本
时间: 2023-06-28 07:05:53 浏览: 100
在 SQL Server 2019 中,应该按照以下方式修改该表:
```
CREATE TABLE [dbo].[tb_SC](
[SNO] [varchar](12) NOT NULL, --学号
[course_id] [varchar](50) NOT NULL, --课程,例:数据库原理与应用实验191
[Grade] [varchar](50) NULL, --成绩
CONSTRAINT [PK_tb_SC] PRIMARY KEY CLUSTERED([SNO],[course_id]), --主键
CONSTRAINT [FK_tb_SC_tb_User] FOREIGN KEY(SNO) REFERENCES [dbo].[tb_User](user_name), --外键约束,表约束
CONSTRAINT [FK_tb_SC_tb_Course] FOREIGN KEY(course_id) REFERENCES [dbo].[tb_Course](course_id) --外键约束,表约束
);
```
其中,外键约束需要使用 `CONSTRAINT` 关键字来定义,而且应该为每个外键约束命名。
相关问题
create table DB_ADS.dbo.ADS_CheckCenter_Details_TMP as DB_ADS.dbo.ADS_CheckCenter_Details 语法有何错误
这个SQL语句的意图是在数据库DB_ADS的dbo schema中创建一个新的临时表ADS_CheckCenter_Details_TMP,它将基于现有的ADS_CheckCenter_Details表的内容。看起来语法上没有明显的错误,不过为了确认是否完全正确,我们可以检查以下几个点:
1. **表的存在**:首先要确保`ADS_CheckCenter_Details`表在`DB_ADS.dbo`中确实存在。
2. **权限**:创建临时表可能需要特定的系统权限,如db_datawriter或相应的临时表管理权限。
3. **大小限制**:如果目标表非常大,创建临时表可能受到存储引擎的内存限制,需确保有足够的空间。
4. **临时表特性**:临时表通常用于一次性操作,如果后续不再使用,需要手动删除。
如果目标表不存在、权限不足,或者担心性能影响,正确的写法应该是:
```sql
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[DB_ADS].[dbo].[ADS_CheckCenter_Details_TMP]') AND type in (N'U'))
BEGIN
CREATE TABLE [DB_ADS].[dbo].[ADS_CheckCenter_Details_TMP]
AS
SELECT * FROM [DB_ADS].[dbo].[ADS_CheckCenter_Details];
END
```
这行代码首先检查临时表是否存在,如果不存在再创建。这样可以避免不必要的资源消耗。
SELECT apps.State,* FROM dls_Test_staffdormitory_apply app INNER JOIN ( --每个人最新申请单的taskid SELECT MAX(app.taskid) taskid,app.d_applyperson FROM dls_Test_staffdormitory_apply app INNER JOIN dbo.dv_SYS_TaskRunningApproved t ON app.taskid = t.TaskID WHERE d_applyperson IS NOT NULL GROUP BY app.d_applyperson ) apps ON app.taskid = apps.taskid错误位置
根据您提供的 SQL 语句,我猜测您可能遇到了 SQL 语法错误的问题。具体错误位置需要您提供更多的信息,比如完整的 SQL 语句和报错信息。不过我可以解释一下这个 SQL 语句的含义:
这个 SQL 语句是一个带有子查询的 INNER JOIN 语句,它的作用是将每个员工最新的申请单和该申请单所在的州(State)连接起来。子查询会返回每个员工最新的申请单(即 taskid 最大的申请单),然后将这些申请单与原表格中的申请单进行 INNER JOIN 操作,根据 taskid 进行连接,最终得到每个员工最新申请单的州以及其他字段信息。
阅读全文