sql server - >插入一个作为主键的值,将Identity()插入另一个表的列中

时间:2014-07-08 08:38:08

标签: sql sql-server database sql-server-2008

我想从具有主键和Is Identity属性的列中插入记录到另一个表的另一列 。 例如,

我有一张名为' STU'使用以下列:

  • SNO(主键和身份[即自动增量])
  • NAME(非null)
  • CLASS(非null)
  • SECTION(非null)

我有一张名为' MARK'使用以下列:

  • MSNO(外键参考STU(SNO))
  • M1(非空)
  • M2(非空)
  • M3(非空)

    CREATE TABLE STU (SNO INT CONSTRAINT PK_SNO PRIMARY KEY (SNO), NAME VARCHAR(25), CLASS VARCHAR(20), SECTION CHAR );
    
    CREATE TABLE MARK(MSNO INT CONSTRAINT FK_MSNO FOREIGN KEY (MSNO) REFERENCES STU(SNO), M1 INT, M2 INT, M3 INT);
    

正如标题所说我试图插入1表中选择其他表中的值。

INSERT INTO MARK (MSNO, M1, M2, M3) SELECT SNO FROM STU WHERE SNO = '%', '100','100','100';

INSERT INTO MARK (MSNO, M1, M2, M3) SELECT SNO FROM STU WHERE SNO = '%' values ('100','100','100');

这两个插入查询都抛出错误

1 个答案:

答案 0 :(得分:0)

INSERT INTO MARK (MSNO, M1, M2, M3)
SELECT SNO FROM STU WHERE SNO = '%' values ('100','100','100');

我认为你的意图是:

INSERT INTO MARK (MSNO, M1, M2, M3)
SELECT SNO, '100', '100', '100' FROM STU WHERE SNO = '%'

SELECT语句描述了要插入的数据。它必须是有效的SELECT语句。追加VALUES无法实现这一目标。

如果您需要在插入之前可视化您要插入的内容,只需先运行SELECT查询。